C++:accumulate(list1.begin(), list1.end(),0);这里的第三个参数是什么呢?

如题所述

首先,accumulate是用于累计计算的函数,默认情况下是求和。而其中第三个参数便是和的初始值。如果数据为a0, ..., an,则accumulate返回a0 + ... + an + 初始值。

事实上,accumulate有两个版本:

template< class InputIt, class T >T accumulate( InputIt first, InputIt last, T init );
template< class InputIt, class T, class BinaryOperation >T accumulate( InputIt first, InputIt last, T init, BinaryOperation op )

第一个版本(即你使用的版本),相当于用加法操作调用第二个版本,即:op(op(...op(a0, a1), ...an), 初始值)。因而,也可以通过如下方式做累乘(假设数据类型为int):

std::accumulate(list1.begin(), list1.end(), 1, std::multiplies<int>());

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-11-08
将list1里面的值累加,第三个参数表示累加时初始值为0本回答被提问者采纳
第2个回答  2012-11-06
第三个参数是累加的初值,比如sum = accumulate(list1.begin(), list1.end(),10);那么sum的值就是容器里所有元素的值再加上这第三个参数10。同时返回值的类型与第三个参数的类型相同。希望可以帮到你,满意请采纳,谢谢!
相似回答