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用法的主要内容,如果未能解决你的问题,请参考以下文章

# 比赛中遇到STL的大坑之accumulate

accumulate

stl集合算法

std::accumulate的用法(转)

std::string,std::vector,std::accumulate注意事项

STL标准库-算法-常用算法