文法:
#include <numeric> T accumulate( input_iterator start, input_iterator end, T val ); T accumulate( input_iterator start, input_iterator end, T val, BinaryFunction f );
val と 範囲[start,end)の要素の全ての合計を求めます。
二項関数 f が与えられた場合、積算時に + 演算子の代わりに f が用いられます。
accumulate 関数は線形時間で実行します。
例えば、以下のコードは、vector 内の整数を合計する accumulate の使用例です:
#include <iostream> using std::cout; #include <vector> using std::vector; #include <numeric> using std::accumulate; int main() { vector<int> v; const int START = 1, END = 10; for( int i = START; i <= END; ++i ) v.push_back(i); int sum = accumulate( v.begin(), v.end(), 0 ); cout << "sum from " << START << " to " << END << " is " << sum << '\n'; }
関連トピック: adjacent_difference, count, inner_product, partial_sum