accumulate の使用方法です.
#include <stdio.h>
#include <vector>
#include <numeric>
using namespace std;
int sum(int s, int n)
{
return (n % 2 == 0) ? s + n : s;
}
int main()
{
int s;
vector<int> v1;
vector<int>::iterator it;
// 初期設定
printf("**初期状態**\n");
for (int i1 = 0; i1 < 5; i1++)
v1.push_back(i1+1);
for (it = v1.begin(); it != v1.end(); it++)
printf(" %d", *it);
printf("\n");
// すべての要素の和
printf("すべての要素の和\n");
s = accumulate(v1.begin(), v1.end(), 0); // 最後の引数は初期値
printf(" %d\n", s);
// 偶数要素の和
printf("偶数要素の和\n");
s = accumulate(v1.begin(), v1.end(), 0, sum);
printf(" %d\n", s);
return 0;
}
(出力)
1 2 3 4 5
すべての要素の和
15
偶数要素の和
6