Search on the blog

2013年5月25日土曜日

知ってると便利なSTL(11) partial_sum

その名のとおりpartial sumを計算してくれる関数です。
以下の処理と同様のことをしてくれます。
template <class InputIterator, class OutputIterator>
   OutputIterator partial_sum ( InputIterator first, InputIterator last,
                                OutputIterator result )
{
  iterator_traits<InputIterator>::value_type val;
  *result++ = val = *first++;
  while (first!=last)
    *result++ = val = val + *first++;
  return result;
}

これは便利。
#include <iostream>
#include <numeric>

using namespace std;

int main() {
    int x[] = {0,1,2,3,4,5,6,7,8,9,10};
    int y[11];
    
    partial_sum(x, x+11, y);

    for (int i = 0; i < 11; i++)
        cout << y[i] << " ";
    cout << endl;

    return 0;
}
のように書くと、
0 1 3 6 10 15 21 28 36 45 55
のように出力されます。

0 件のコメント:

コメントを投稿