C++中accumulate的用法
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的用法相关推荐
- C++的STL中accumulate的用法
accumulate定义在#include<numeric>中,作用有两个,一个是累加求和,另一个是自定义类型数据的处理 1.累加求和 int sum = accumulate(vec.b ...
- C++的STL中accumulate函数用法
accumulate(arr.begin(), arr.end(), int val); accumulate函数包含在 #include<numeric> 头文件下,其中有三个参数,前两 ...
- C++:使用vector中accumulate求和计算出错
vector中accumulate的一般用法为: vector<double>a; double b=accumulate(a.begin(),a.end(),0); 第三个参数是累加的初 ...
- mysql中change用法,mysql 中alter的用法以及一些步骤
mysql 中alter的用法以及一些方法 在用到alter的时间,查到了这个文章,就copy下来了,详细进入下面链接: MySQL之alter语句用法总结 1:删除列 ALTER TABLE [表名 ...
- mysql中正则表达式的用法_Mysql中正则表达式Regexp常见用法
Mysql中Regexp常见用法 模糊匹配,包含特定字符串 # 查找content字段中包含"车友俱乐部"的记录 select * from club_content where ...
- 【C++】C/C++ 中 static 的用法全局变量与局部变量
C/C++ 中 static 的用法全局变量与局部变量 目录 1. 什么是static? 1.1 static 的引入 1.2 静态数据的存储 2. 在 C/C++ 中static的作用 2.1 总的 ...
- php foreach嵌套foreach,php中foreach怎么嵌套foreach PHP中foreach函数用法?
foreach的使用方法小编不是很明确,分享达人指教一下.foreach (array_expressforeach($array as $key) { if(xxxx) { break; //bre ...
- python中str的index什么意思_python中index的用法是什么
index() 一般用处是在序列中检索参数并返回第一次出现的索引,没找到就会报错,比如:>>> t=tuple('Allen') >>> t ('A', 'l', ...
- php foreach是什么,php中foreach的用法是什么
php中foreach的用法是:[foreach ($array as $value) {要执行代码;}],每进行一次循环,当前数组元素的值就会被赋值给$value变量,在进行下一次循环时,将得到数组 ...
最新文章
- json-lib 常用功能
- 一个完整的网上商城的源码_黄冈微信分销商城系统-源码码网
- qt 中转化图片格式与大小的方法
- Nginx 负载均衡器(1+2)
- 【从入门到放弃-Java】并发编程-锁-synchronized
- 计算机网络大学教学大纲,《计算机网络》教学大纲
- python之-- 异常
- html右下角固定广告,jQuery右下角悬浮广告
- 华为以“平台应变”之道角逐数字化转型“深水区”
- efl是什么意思_efl是什么意思
- Zabbix 服务器修改时区时间
- Axure8有效注册码
- 轻松易懂的CSS学习权威指南来了
- 【沃顿商学院学习笔记】领导力——Business Impact:03商业如何驱动影响力的案例Some Cases
- 日落20181125001 - UGUI组件应用之Animation和CanvasGroup制作渐现渐隐效果
- 如何查找下载外文文献,超强外文文献检索网站排名
- Linux 管理联网 nmcli常用命令
- 【算法】动态规划 ④ ( 动态规划分类 | 坐标型动态规划 | 前缀划分型动态规划 | 前缀匹配型动态规划 | 区间型动态规划 | 背包型动态规划 )
- TX2刷机 JetPack4.4
- APP开发技术架构方案
热门文章
- 华铭智能属于芯片概念吗_绩优滞涨的科技股名单来袭!两大活跃资金加仓股仅6只射频芯片龙头在列...
- 数字图像处理Matlab-彩色图像处理(附代码)
- VR画面渲染性能是这样提升的
- 本科计算机数据库应用,数据库计算机论文,关于计算机数据库的管理应用相关参考文献资料-免费论文范文...
- 计算机操作系统 概述(题库答案)
- oracle 配置ip地址监听,Windows环境下修改Oracle实例监听IP地址
- ISD1700系列语音芯片使用注意事项
- 单相半波可控整流电路 Single Phase Half Wave Controlled Rectifier
- Java - JDK 安装、环境配置
- 求解Python 爬取百度翻译手机版{errno:997,from:zh,to:en,query:\u4eba\u751f\u82e6\u77ed}怎么办