title: c++numeric
categories: 编程
tags:
- c++
date: 2022-04-06 15:26:13
numeric针对数字序列的头文件
#include
针对某些数字序列的操作,需要用到较多的二元谓词
示例
准备
#include <algorithm>
#include <vector>
#include <iostream>
#include <functional>
#include <numeric>
using namespace std;
void PrintV(int v)
{
cout << v << " ";
}
void show(vector<int> v)
{
for_each(v.begin(), v.end(), PrintV);
cout << endl;
}
客户端代码
int main()
{
vector<int> v;//示例容器
vector<int> new_v;//复制容器
vector<int> reunion;//合并容器
reunion.resize(20);
vector<int>::iterator it;//返回迭代器
for (int i = 1; i < 10; i++)
{
v.push_back(i);
new_v.push_back(i * 10);
}
int result = 0; //存放结果
int sum = 0;
result = accumulate(v.begin(), v.end(), sum, minus<int>());//累积
cout << result << endl;
show(new_v);
show(v);
result = inner_product(new_v.begin(), new_v.end(),v.begin(), sum, plus<int>(),divides<int>());//前面的是变量,第二个是参数,然后先除,再累加到sum上面
cout << result << endl;
adjacent_difference(new_v.begin(), new_v.end(), reunion.begin(),minus<int>());
show(reunion);//对两个之间进行操作
partial_sum(v.begin(), v.end(), reunion.begin());
show(reunion);//类似求前n项和
cout << "end" << endl;
return 0;
}
结果
-45
10 20 30 40 50 60 70 80 90
1 2 3 4 5 6 7 8 9
90
10 10 10 10 10 10 10 10 10 0 0 0 0 0 0 0 0 0 0 0
1 3 6 10 15 21 28 36 45 0 0 0 0 0 0 0 0 0 0 0
end