首先,accumulate是用于累计计算的函数,默认情况下是求和。而其中第三个参数便是和的初始值。如果数据为a0, ..., an,则accumulate返回a0 + ... + an + 初始值。
事实上,accumulate有两个版本:
template< class InputIt, class T >T accumulate( InputIt first, InputIt last, T init );第一个版本(即你使用的版本),相当于用加法操作调用第二个版本,即:op(op(...op(a0, a1), ...an), 初始值)。因而,也可以通过如下方式做累乘(假设数据类型为int):
std::accumulate(list1.begin(), list1.end(), 1, std::multiplies<int>());