accumulate()は、指定した範囲のすべての要素の値を累算した結果を計算します。
accumulate()は次の書式で使います。
#include<numeric>
template T accumulate(iiter first, iiter last, T val);
template T accumulate(iiter first, iiter last, T val, pred pr);
引数firstは最初の要素の反復子、lastは最後の要素の反復子、valはアキュムレーターを初期化する値、 prは各要素に適用するバイナリ操作です。
次の例は、整数値1~10をベクタに保存し、アルゴリズムaccumulate()を使って合計を求め、出力するプログラムの例です。
#include <numeric>
#include <vector>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
typedef vector<int>::iterator iterator;
int d[10] = {1,2,3,4,5,6,7,8,9,10};
vector<int> v(d, d+10);
int sum = accumulate(v.begin(), v.end(), 0);
cout << "1~10の合計= " << sum << endl;
return 0;
}
実行結果は次のようになります。
1~10の合計= 55