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

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

std::adjacent_difference

STL―標準テンプレートライブラリによるC++プログラミング 第2版
y0 = x0, y1 = x1 - x0, y2 = x2 - x1, y3 = x3 - x2 と,隣同士の差を計算してゆく。

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

 partial_sum(a, a + N, a);
 copy(a, a + N, o); cout << endl;

 adjacent_difference(a, a + N, b);
 copy(b, b + N, o); cout << endl;
}

出力:

Illustrating the generic adjacent_difference algorithm.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
1 3 6 10 15 21 28 36 45 55 66 78 91 105 120 136 153 171 190 210
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20