[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