accumulate 的用法
accumulate 定义在#include<numeric>
中,作用有两个,一个是累加求和,另一个是自定义类型数据的处理。
累加求和
int a[5] = {0, 1, 3, 4, 5};
int sum = accumulate(vec.begin() , vec.end() , 0);
accumulate 有三个参数:头两个参数是要累加的元素范围,第三个参数是累加的初始值。
accumulate 函数将它的一个内部变量设置为一个指定的初始值,然后在此初值上累加输入范围内所有元素的值。accumulate 算法返回累加的结果,其返回类型就是其第三个实参的类型。
可以使用 accumulate 把 string 型的 vector 容器中的元素连接起来:
string sum = accumulate(v.begin() , v.end() , string(" "));
这个函数调用的效果是:从一个空格字符串开始,把vec里的每个元素连接成一个字符串。
自定义数据类型的处理
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; return 0;
}
accumulate 的用法相关推荐
- C++的accumulate()的用法
本博客只作为自己使用时查阅 用法: accumulate(vec.begin(), vec.end(), 0) // 累加begin()到end(),初值为0
- C++的STL中accumulate的用法
accumulate定义在#include<numeric>中,作用有两个,一个是累加求和,另一个是自定义类型数据的处理 1.累加求和 int sum = accumulate(vec.b ...
- accumulate详细用法
accumulate 作用是累加一个数组的元素 定义在头文件 < numeric > accumulate(vt.begin(), vt.end(), 0); 第三的参数是起始数 #inc ...
- std::accumulate的用法
std :: accumulate 累计范围内的值 返回将范围中的所有值累加[first,last)到init的结果. 默认操作是向上添加,但可以将不同的操作指定为binary_op. accumul ...
- accumulate的用法
accumulate定义在#include中,作用有两个,一个是累加求和,另一个是自定义类型数据的处理 1.累加求和 int sum = accumulate(vec.begin() , vec.en ...
- C++的STL中accumulate函数用法
accumulate(arr.begin(), arr.end(), int val); accumulate函数包含在 #include<numeric> 头文件下,其中有三个参数,前两 ...
- C++:accumulate函数用法
头文件:#include<numeric> 作用1:累加求和 int sum = accumulate(vec.begin(), vec.end(), 0); 其中前两个参数代表求和的范围 ...
- C++ STL 中的accumulate的用法
accumulate定义在#include<numeric>中,作用有两个,一个是累加求和,另一个是自定义类型数据的处理 1.累加求和 [cpp] view plain copy int ...
- C++中accumulate的用法
accumulate定义在#include中,作用有两个,一个是累加求和,另一个是自定义类型数据的处理 累加求和 int sum = accumulate(vec.begin() , vec.end( ...
最新文章
- [C] 深度优先搜索解决连通块/染色问题——求岛的个数
- 本地安装gem install --local redis-stat-0.4.13.gem
- LRU最近最少使用缓存集合
- c++突破网关屏蔽_为什么加了屏蔽罩,测试效果反而不好?
- 了解 C# foreach 内部语句和使用 yield 实现的自定义迭代器
- HDU5620 KK's Steel【菲波拉契数列+水题】
- poj 1734 Sightseeing trip(floyd 拓展 求最小环)
- 【车牌识别】基于matlab投影模板匹配车牌识别【含Matlab源码 1359期】
- 2022亚太杯数学建模比赛准备
- 2021SC@SDUSC Zxing开源代码(十五)PDF417二维码(一)
- 服务器正文21:不同编译器对预编译的处理(简单介绍msvc和gcc)及常用gcc编译指令、跨平台debug、release不同指令flag选择
- java 情感分析_Flink基于Alink中文情感分析示例(Java版本)
- springboot+vue校园新闻网站(源码+说明文档)
- 活动总曝光超1亿,单场引导GMV超1000万,华少快手生活服务专场首战告捷!
- 学会爬虫不用再收藏了,直接把网站拍照留念
- 矩阵旋转(逆时针九十度
- 高中数学向量巨难题型四心问题解题技巧
- mac挂载ntfs格式移动硬盘
- AcWing 204. 表达整数的奇怪方式
- 2021年T电梯修理考试及T电梯修理考试总结
热门文章
- PCDN服务接入实操手册
- 最新前端开发面试笔试题及答案---图片(面试题系列持续更新中)(8)
- 【老生谈算法】matlab实现高斯白噪声仿真算法源码——高斯白噪声
- centos9 intel集显直通方法
- iconfont官网中的图标保留其原本的颜色
- Android 面试指南
- 使用Calibre转换任意格式为支持KF8的mobi文件
- Magnetic Levitation for Soft-Tethered Capsule Colonoscopy Actuated With a Single Permanent Magnet
- C/C++基础查漏补缺(一)----------寒假学习笔记(一)
- 栈和队列的区别与栈和堆的区别