accumulate

[機能]

  イテレータで指定された範囲の総和を計算します.2 番目の形式では,2 引数関数
  <T> binary_op(<T>s, <T>n>
によって,和の計算方法を指定できます.この関数において,s はそれまでの和,n が要素の値を示します.

[形式]
	#include <numeric>
	#include <functional>

	template <class InputIterator, class T> T accumulate(InputIterator first, InputIterator last, T init);
	template <class InputIterator, class T, class BinaryOperation> T accumulate(InputIterator first, InputIterator last, T init, BinaryOperation binary_op);
		

[使用例]

  1. accumulate の使用方法です.
    #include <stdio.h>
    #include <vector>
    #include <numeric>
    using namespace std;
    
    int sum(int s, int n)
    {
    	return (n % 2 == 0) ? s + n : s;
    }
    
    int main()
    {
    	int s;
    	vector<int> v1;
    	vector<int>::iterator it;
    					// 初期設定
    	printf("**初期状態**\n");
    	for (int i1 = 0; i1 < 5; i1++)
    		v1.push_back(i1+1);
    	for (it = v1.begin(); it != v1.end(); it++)
    		printf("  %d", *it);
    	printf("\n");
    					// すべての要素の和
    	printf("すべての要素の和\n");
    	s = accumulate(v1.begin(), v1.end(), 0);   // 最後の引数は初期値
    	printf("  %d\n", s);
    					// 偶数要素の和
    	printf("偶数要素の和\n");
    	s = accumulate(v1.begin(), v1.end(), 0, sum);
    	printf("  %d\n", s);
    
    	return 0;
    }
    			
    (出力)
      1  2  3  4  5
    すべての要素の和
      15
    偶数要素の和
      6
    			
[参照]

partial_sumadjacent_differenceinner_product

菅沼ホーム 本文目次 演習問題解答例 付録目次 索引