accumulate
主要就两点内容,
- 可以用来直接计算数组或者容器中C++内置数据类型,默认加逻辑,但是可以自行指定
- 可以用来计算自定义的数据类型
#include <numeric> //包含的头文件
1 数组或容器的使用
1.1数组的累加和
int myfunction (int x, int y) {return x+2*y;} // 自定义的加逻辑
int init = 100; // 累加的初始值
int arr[]={10,20,30,40,50}; // 要进行累加的数组
int sum = accumulate(arr , arr+3 , init); // 在初始值的基础上进行范围求和
int sum = accumulate(arr , arr+3 , init, myfunction); // 在初始值的基础上进行范围自定义加逻辑求和
1.2容器类型同样适用
vector<int> testArray = { 1, 2, 3, 4 };
int sumT = accumulate(testArray.begin(), testArray.end(), 0);
1.3字符串拼接
vector<char> testChr = { 'a', 'b', 'c' };
string strSum = accumulate(testChr.begin(), testChr.end(), (string)" "); \\sunT = "abc"
2 自定义数据类型的使用
#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; }); // 在初值为0的基础上统计成绩
cout << sum << endl;
system("pause");
return 0;
}