STL的accumulate用法
Posted crystar
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STL的accumulate用法相关的知识,希望对你有一定的参考价值。
std::accumulate
该函数定义于头文件
template< class InputIt, class T >
constexpr T accumulate( InputIt first, InputIt last, T init );
template< class InputIt, class T, class BinaryOperation >
constexpr T accumulate( InputIt first, InputIt last, T init, BinaryOperation op );
累加求和
accumulate函数有三个参数,前两个参数指定元素范围,第三个是累加的初值。
比如现在要求a+b,可以这么来写:
int main()
{
vector<string> v;
int a,b;
cin >> a >> b;
v.push_back(a);v.push_back(b);
int sum = accumulate(v.begin(),v.end(),0);
cout << sum << endl;
}
该函数也可以用来进行字符串的拼接,下面代码的作用是拼接a字符串和b字符串。
int main()
{
vector<string> v;
string a,b;
cin >> a >> b;
v.push_back(a);v.push_back(b);
string sum = accumulate(v.begin(),v.end(),string(""));
cout << sum << endl;
}
自定义数据类型的处理
我们将自定义的结构体Node的数值进行累加。
struct Node
{
string Name;
int score;
};
vector<Node> tr = {
{"zhangsan",100},
{"lisi",200},
{"wangwu",300}
};
int main()
{
int sum1 = accumulate(tr.begin(),tr.end(),0,[](int a,Node b){return a + b.score;});
cout << sum1 << endl;
}
以上是关于STL的accumulate用法的主要内容,如果未能解决你的问题,请参考以下文章