[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