accumulate定义在#include中,作用有两个,一个是累加求和,另一个是自定义类型数据的处理

累加求和

int sum = accumulate(vec.begin() , vec.end() , 42);

accumulate带有三个形参:头两个形参指定要累加的元素范围,第三个形参则是累加的初值。

accumulate函数将它的一个内部变量设置为指定的初始值,然后在此初值上累加输入范围内所有元素的值。accumulate算法返回累加的结果,其返回类型就是其第三个实参的类型。

可以使用accumulate把string型的vector容器中的元素连接起来:

string sum = accumulate(v.begin(), v.end(), string(""));

这个函数调用的效果是:从空字符串开始,把vec里的每个元素连接成一个字符串。

2.自定义数据类型的处理

C++ STL中有一个通用的数值类型计算函数— accumulate(),可以用来直接计算数组或者容器中C++内置数据类型,例如:


#include <numeric>
int arr[]={10,20,30,40,50};
vector<int> va(&arr[0],&arr[5]);
int sum=accumulate(va.begin(),va.end(),0);  //sum = 150

但是对于自定义数据类型,我们就需要自己动手写一个回调函数来实现自定义数据的处理,然后让它作为accumulate()的第四个参数,accumulate()的原型为


template<class _InIt, class _Ty,  class _Fn2>
inline _Ty _Accumulate(_InIt _First, _InIt _Last, _Ty _Val, _Fn2 _Func)
{   // return sum of _Val and all in [_First, _Last), using _Func  for (; _First != _Last; ++_First)  _Val = _Func(_Val, *_First);  return (_Val);

【例】:

#include <vector>
#include <string>
using namespace std;  struct Grade
{  string name;  int grade;
};  int main()
{  Grade subject[3] = {  { "English", 80 },  { "Biology", 70 },  { "History", 90 }  };  int sum = accumulate(subject, subject + 3, 0, [](int a, Grade b){return a + b.grade; });  cout << sum << endl;  system("pause");  return 0;
}

C++中accumulate的用法相关推荐

  1. C++的STL中accumulate的用法

    accumulate定义在#include<numeric>中,作用有两个,一个是累加求和,另一个是自定义类型数据的处理 1.累加求和 int sum = accumulate(vec.b ...

  2. C++的STL中accumulate函数用法

    accumulate(arr.begin(), arr.end(), int val); accumulate函数包含在 #include<numeric> 头文件下,其中有三个参数,前两 ...

  3. C++:使用vector中accumulate求和计算出错

    vector中accumulate的一般用法为: vector<double>a; double b=accumulate(a.begin(),a.end(),0); 第三个参数是累加的初 ...

  4. mysql中change用法,mysql 中alter的用法以及一些步骤

    mysql 中alter的用法以及一些方法 在用到alter的时间,查到了这个文章,就copy下来了,详细进入下面链接: MySQL之alter语句用法总结 1:删除列 ALTER TABLE [表名 ...

  5. mysql中正则表达式的用法_Mysql中正则表达式Regexp常见用法

    Mysql中Regexp常见用法 模糊匹配,包含特定字符串 # 查找content字段中包含"车友俱乐部"的记录 select * from club_content where ...

  6. 【C++】C/C++ 中 static 的用法全局变量与局部变量

    C/C++ 中 static 的用法全局变量与局部变量 目录 1. 什么是static? 1.1 static 的引入 1.2 静态数据的存储 2. 在 C/C++ 中static的作用 2.1 总的 ...

  7. php foreach嵌套foreach,php中foreach怎么嵌套foreach PHP中foreach函数用法?

    foreach的使用方法小编不是很明确,分享达人指教一下.foreach (array_expressforeach($array as $key) { if(xxxx) { break; //bre ...

  8. python中str的index什么意思_python中index的用法是什么

    index() 一般用处是在序列中检索参数并返回第一次出现的索引,没找到就会报错,比如:>>> t=tuple('Allen') >>> t ('A', 'l', ...

  9. php foreach是什么,php中foreach的用法是什么

    php中foreach的用法是:[foreach ($array as $value) {要执行代码;}],每进行一次循环,当前数组元素的值就会被赋值给$value变量,在进行下一次循环时,将得到数组 ...

最新文章

  1. json-lib 常用功能
  2. 一个完整的网上商城的源码_黄冈微信分销商城系统-源码码网
  3. qt 中转化图片格式与大小的方法
  4. Nginx 负载均衡器(1+2)
  5. 【从入门到放弃-Java】并发编程-锁-synchronized
  6. 计算机网络大学教学大纲,《计算机网络》教学大纲
  7. python之-- 异常
  8. html右下角固定广告,jQuery右下角悬浮广告
  9. 华为以“平台应变”之道角逐数字化转型“深水区”
  10. efl是什么意思_efl是什么意思
  11. Zabbix 服务器修改时区时间
  12. Axure8有效注册码
  13. 轻松易懂的CSS学习权威指南来了
  14. 【沃顿商学院学习笔记】领导力——Business Impact:03商业如何驱动影响力的案例Some Cases
  15. 日落20181125001 - UGUI组件应用之Animation和CanvasGroup制作渐现渐隐效果
  16. 如何查找下载外文文献,超强外文文献检索网站排名
  17. Linux 管理联网 nmcli常用命令
  18. 【算法】动态规划 ④ ( 动态规划分类 | 坐标型动态规划 | 前缀划分型动态规划 | 前缀匹配型动态规划 | 区间型动态规划 | 背包型动态规划 )
  19. TX2刷机 JetPack4.4
  20. APP开发技术架构方案

热门文章

  1. 华铭智能属于芯片概念吗_绩优滞涨的科技股名单来袭!两大活跃资金加仓股仅6只射频芯片龙头在列...
  2. 数字图像处理Matlab-彩色图像处理(附代码)
  3. VR画面渲染性能是这样提升的
  4. 本科计算机数据库应用,数据库计算机论文,关于计算机数据库的管理应用相关参考文献资料-免费论文范文...
  5. 计算机操作系统 概述(题库答案)
  6. oracle 配置ip地址监听,Windows环境下修改Oracle实例监听IP地址
  7. ISD1700系列语音芯片使用注意事项
  8. 单相半波可控整流电路 Single Phase Half Wave Controlled Rectifier
  9. Java - JDK 安装、环境配置
  10. 求解Python 爬取百度翻译手机版{errno:997,from:zh,to:en,query:\u4eba\u751f\u82e6\u77ed}怎么办