Accumulate(累积) values in range
accumulate带有三个形参:头两个形参指定要累加的元素范围,第三个形参则是累加的初值。
模板:
template <class InputIterator, class T>
T accumulate (InputIterator first, InputIterator last, T init)
{
while (first!=last) {
init = init + *first; // or: init=binary_op(init,*first) for the binary_op version
++first;
}
return init;
}
实例:
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
int main()
{
vector<int> num={1,2,3,4,5,6,7,8,9,10};
vector<string> str={"1","2","3","4","5"};
int sum = accumulate(num.begin(),num.end(),0);
string sum1 = accumulate(str.begin(),str.end(),string(""));
cout <<sum<< endl; //55
cout <<sum1<<endl; //12345
return 0;
}
注意!!!,在字符串相加时不能直接以空串 “” 作为初始值,这样编译器会识别为const char*类型,这个类型是没有+操作的。