C++ accumulate函数用法
文章目录
- 一、函数简单介绍
- 二、具体使用场景
- 1. 计算数组中所有元素的和
- 2. 计算数组中所有元素的乘积
- 3. 计算数组中每个元素乘以3之后的和
- 4.计算数组中每个元素减去3之后的和
- 5.计算班级内学生的平均分
- 6.拼接字符串
一、函数简单介绍
accumulate是numeric
库中的一个函数,主要用来对指定范围内元素求和,但也自行指定一些其他操作,如范围内所有元素相乘、相除等。
使用前需要引入相应的头文件。
#include <numeric>
函数共有四个参数,其中前三个为必须,第四个为非必需。
若不指定第四个参数,则默认对范围内的元素进行累加操作。
accumulate(起始迭代器, 结束迭代器, 初始值, 自定义操作函数)
二、具体使用场景
1. 计算数组中所有元素的和
#include <iostream>
#include <vector>
#include <numeric>
using namespace std;int main() {vector<int> arr{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};int sum = accumulate(arr.begin(), arr.end(), 0); // 初值0 + (1 + 2 + 3 + 4 +... + 10)cout << sum << endl; // 输出55return 0;
}
2. 计算数组中所有元素的乘积
需要指定第四个参数,这里使用的是乘法函数 multiplies<type>()
, type根据元素的类型选择。
#include <iostream>
#include <vector>
#include <numeric>using namespace std;int main() {vector<int> arr{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};int sum = accumulate(arr.begin(), arr.end(), 1, multiplies<int>()); // 初值1 * (1 * 2 * 3 * 4 *... * 10)cout << sum << endl; // 输出3628800return 0;
}
3. 计算数组中每个元素乘以3之后的和
#include <iostream>
#include <vector>
#include <numeric>using namespace std;int fun(int acc, int num) {return acc + num * 3; // 计算数组中每个元素乘以3
}int main() {vector<int> arr{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};int sum = accumulate(arr.begin(), arr.end(), 0, fun);cout << sum << endl; // 输出 165return 0;
}
4.计算数组中每个元素减去3之后的和
#include <iostream>
#include <vector>
#include <numeric>using namespace std;int fun(int acc, int num) {return acc + (num - 3) ; // 计算数组中每个元素减去3之后的和
}int main() {vector<int> arr{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};int sum = accumulate(arr.begin(), arr.end(), 0, fun);cout << sum << endl; // 输出25return 0;
}
5.计算班级内学生的平均分
#include <iostream>
#include <vector>
#include <numeric>using namespace std;struct Student {string name;int score;Student() {}; // 无参构造函数Student(string name, int score) : name(name), score(score) {}; // 有参构造函数
};int fun(int acc, Student b) {return acc + b.score;
}int main() {vector<Student> arr;arr.emplace_back("Alice", 82);arr.emplace_back("Bob", 91);arr.emplace_back("Lucy", 85);arr.emplace_back("Anna", 60);arr.emplace_back("June", 73);int avg_score = accumulate(arr.begin(), arr.end(), 0, fun) / arr.size(); // 总分/学生数cout << avg_score << endl;return 0;
}
6.拼接字符串
C++中字符串之间也可以使用+,即拼接两个字符串。
#include <iostream>
#include <vector>
#include <numeric>using namespace std;int main() {vector<string> words{"this ", "is ", "a ", "sentence!"};string init, res;res = accumulate(words.begin(), words.end(), init); // 连接字符串cout << res << endl; // this is a sentence!return 0;
}
转载于https://blog.csdn.net/VariatioZbw/article/details/125257536
C++ accumulate函数用法相关推荐
- 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); 其中前两个参数代表求和的范围 ...
- OpenCV最全函数用法
记录OpenCV中学习的函数用法 文章目录 图像阈值 cv.threshold()全局阈值 cv.adaptiveThreshold()自适应阈值 Otsu's Binarization: 基于直方图 ...
- C++ copy()函数用法详解(深入了解,一文学会)
C++ 算法 copy() 函数用于将容器 [first,last] 的所有元素从结果开始复制到不同的容器中. 本文介绍了copy.strcpy.strncpy.memcpy.copy_n.copy_ ...
- 2021年大数据常用语言Scala(三十七):scala高级用法 高阶函数用法
目录 高阶函数用法 作为值的函数 匿名函数 柯里化(多参数列表) 闭包 高阶函数用法 Scala 混合了面向对象和函数式的特性,在函数式编程语言中,函数是"头等公民",它和Int. ...
- php foreach嵌套foreach,php中foreach怎么嵌套foreach PHP中foreach函数用法?
foreach的使用方法小编不是很明确,分享达人指教一下.foreach (array_expressforeach($array as $key) { if(xxxx) { break; //bre ...
- linux中awk下 gsub函数用法
gsub函数则使得在所有正则表达式被匹配的时候都发生替换 gsub(regular expression, subsitution string, target string);简称 gsub(r,s ...
- ROW_NUMBER() OVER()函数用法详解 (分组排序 例子多)
ROW_NUMBER() OVER()函数用法详解 (分组排序 例子多) https://blog.csdn.net/qq_25221835/article/details/82762416 post ...
- 详细记录python的range()函数用法
详细记录python的range()函数用法 使用python的人都知道range()函数很方便,今天再用到他的时候发现了很多以前看到过但是忘记的细节.这里记录一下range(),复习下list的sl ...
最新文章
- Spring 入门知识点笔记整理
- spring boot 项目打成war包部署到服务器
- React 在body上绑定事件以及阻止事件冒泡
- 中科院C语言应聘机试编程题6,中科院计算所保研笔试+机试+面试经验分享
- VGA接口一根针折了
- 修改域的NetBIOS名称
- 自制电吉他效果器 DIY PCB(三)原理图与封装 上
- 部署Extmail邮件系统需注意几点
- 华为携西班牙电信于智利设立NB-IoT开放实验室
- CSS 3之网页背景颜色
- 有道云笔记 markdown html,有道云笔记Markdown之甘特图
- liferay-protal学习1-配置开发环境
- 转:什么都没有反而可以做得更好
- # IE浏览器打不开网页,google浏览器能打开
- 三、python数据序列1-列表
- spring-context.xml
- iOS 开发者账号权限分配
- linux scp控制带宽,Linux系统中安装使用Trickle来控制用户带宽
- ubuntu 禁用笔记本触摸板
- Frame、Iframe、Frameset 的区别