[C++11] std::accumulate
C++ 中的 sum()
template<class InputIt, class T> (constexpr) T accumulate(InputIt first, InputIt last, T init(, BinaryOperation op));
| frist, last | range 為 [first, last) | 
| init | initial value | 
| op | 預設為 plus<InputIt>() | 
相當於
template <class InputIterator, class T>
  T accumulate(InputIterator first, InputIterator last, T init, BinaryOperation op)
{
  acc = init
  for(; first != last; ++first){
    acc = op(acc, *first)
  }
  return acc;
}
範例
vector<int> vi{1, 2, 3};
EXPECT_EQ(6, accumulate(vi.begin(), vi.end(), 0);
EXPECT_EQ(6, accumulate(vi.begin(), vi.end(), 0, [](int i, int j) ->int {return i + j;}));
EXPECT_EQ(12, accumulate(vi.begin(), vi.end(), 0, [](int i, int j) ->int { return i + 2*j; }));
Last Updated on 2023/08/16 by A1go
 
	
           
  