partial_sum の使用方法です.
#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()
{
vector<int> v1, v2, v3;
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");
// v1 のすべての要素の部分和
printf("v1 のすべての要素の部分和\n");
partial_sum(v1.begin(), v1.end(), inserter(v2, v2.begin()));
for (it = v2.begin(); it != v2.end(); it++)
printf(" %d", *it);
printf("\n");
// v1 の偶数要素の部分和(最初は v1 の 1 番目の要素と必ず一致)
printf("v1 の偶数要素の部分和(最初は v1 の 1 番目の要素と必ず一致)\n");
partial_sum(v1.begin(), v1.end(), inserter(v3, v3.begin()), sum);
for (it = v3.begin(); it != v3.end(); it++)
printf(" %d", *it);
printf("\n");
return 0;
}
(出力)
**初期状態**
1 2 3 4 5
v1 のすべての要素の部分和
1 3 6 10 15
v1 の偶数要素の部分和(最初は v1 の 1 番目の要素と必ず一致)
1 3 3 7 7