とくにあぶなくないRiSKのブログ

危ないRiSKのブログだったかもしれない。本当はRiSKだけどググラビリティとか取得できるIDの都合でsscriskも使ったり。

std::partial_sum

STL―標準テンプレートライブラリによるC++プログラミング 第2版
x0 を y0 へ, x0 + x1 を y1 へ,x0 + x1 + x2 を y2 へと入れてゆく。
出力先は元のコンテナにすることも可能。その場合 x0 を x0, x0 + x1 を x1, x0 + x1 + x2 を x2 へと入れてゆく。

// P120 ex05-32.cpp
#include<iostream>
#include<numeric>
#include<algorithm>
int main(){
 using std::cout;
 using std::endl;
 using std::partial_sum;
 using std::copy;
 using std::ostream_iterator;
 cout << "Illustrating the generic partial_sum algorithm." << endl;
 const int N = 15;
 int a[N], b[N];
 for(int i = 0; i < N; ++i)a[i] = i;

 partial_sum(a, a + N, b);
 copy(b, b + N, ostream_iterator<int>(cout, " ")); cout << endl;
 partial_sum(a, a + N, a);
 copy(a, a + N, ostream_iterator<int>(cout, " ")); cout << endl;
}

出力:

Illustrating the generic partial_sum algorithm.
0 1 3 6 10 15 21 28 36 45 55 66 78 91 105
0 1 3 6 10 15 21 28 36 45 55 66 78 91 105