C++のメモ - std::accumulate
配列の総和.関数オブジェクトで和以外の計算も可能.

struct multiply
{
public:
  int operator()(int x, int y) { return x * y; };
};

int main()
{
  std::array<int, 10> data;
  for( size_t i = 0; i < data.size(); ++i)
  {
    data[i] = i+1;
  }

  int sum = std::accumulate( data.begin(), data.end(), 0 /* = initial value */ );
  int product = std::accumulate( data.begin(), data.end(), 1, mutiply() );

  std::cout << "Σdata = " << sum << std::endl;
  std::cout << "Πdata = " << product << std::endl;
}