码迷,mamicode.com
首页 > 其他好文 > 详细

STL的accumulate用法

时间:2020-07-16 00:07:47      阅读:69      评论:0      收藏:0      [点我收藏+]

标签:first   自定义   name   code   const   int   init   字符   cout   

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用法

标签:first   自定义   name   code   const   int   init   字符   cout   

原文地址:https://www.cnblogs.com/Crystar/p/13307477.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!