[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

目錄

目錄
Bitnami