accumulate 加法
partial_sum 逐步求和
inner_product :求积
adjacent_difference 求差
accumulate(加法)
#include<iostream> #include<numeric> // 算术类算法的头文件 #include<functional> #include<algorithm> #include<vector> using namespace std; int main() { vector<int> vec1{ 1, 2, 3, 4, 5, 6 }; vector<int> vec2{ 4, 5, 6, 7, 8, 9 }; //1.accumulate 累加 int sum = 0; auto m = accumulate(vec1.begin(), vec1.end(), sum); cout << m << endl; return 0; }
partial_sum(逐步加法)
就是第一个数和第二个数相加,然后放在第二个位置上,第二个数与第三个数相加,放在第三个位置上
//2. partial_sum vector<int> result(vec1.size()); partial_sum(vec1.begin(), vec1.end(), result.begin()); //注意:用流型迭代器打印的时候,要写出类型 copy(result.begin(), result.end(),ostream_iterator<int>(cout, " ")); auto mm = partial_sum(vec1.begin(), vec1.end(), result.begin());
inner_product(积)
两个迭代器,各自第一个数相成乘加上各自第二个数相乘加上各自第三个数相乘…
#include<iostream> #include<numeric> // 算术类算法的头文件 #include<functional> #include<algorithm> #include<vector> using namespace std; int main() { vector<int> vec1 = { 1, 2, 3, 4, 5, 6 }; vector<int> vec2{ 4, 5, 6, 7, 8, 9 }; //3.inner_prodct vector<int> result1(vec1.size()); cout << inner_product(vec1.begin(), vec1.end(),vec2.begin(), 0); return 0; }
adjacent_difference(求差)
第二个元素减第一个元素,第三个元素减第二个元素
#include<iostream> #include<numeric> // 算术类算法的头文件 #include<functional> #include<algorithm> #include<vector> using namespace std; int main() { //4.adjacent_difference 求差 vector<int> vec3{ 1, 2, 3, 4, 5, 6, 7 }; vector<int> vec4{ 2, 3 ,4, 5, 6, 7, 8 }; adjacent_difference(vec3.begin(), vec3.end(),ostream_iterator<int>(cout, " ")); return 0; }