iota
将一组递增的值赋值给迭代器区间内的元素
#include <numeric>
#include <algorithm>
#include <iostream>
using namespace std;
void print(int x){
cout << x << ' ';
}
int main(void){
int iArray[10];
iota(iArray, iArray+10, 0);
for_each(iArray, iArray+10, print);
cout << endl;
return 0;
}
accumulate
可以将区间的元素进行累计求和,或者你可以DIY一个累计求积之类的功能
#include <numeric>
#include <iostream>
using namespace std;
int multiply(int x, int y){
return x * y;
}
int main(void){
int iArray[5]={1, 2, 3, 4, 5};
cout << "数组iArray的元素和为"
<< accumulate(iArray, iArray+5, 0)
<< endl;
cout << "数组iArray的元素乘积为"
<< accumulate(iArray, iArray+5, 1, multiply)
<< endl;
return 0;
}
inner_product
对两个区间内的元素进行累积计算,类似于上面也可以自己DIY一些功能出来
#include <numeric>
#include <iostream>
int add(int x, int y){
return x + y;
}
int mul(int x, int y){
return x * y;
}
int main(void){
using namespace std;
int iArray1[3]={2, 5, 4};
int iArray2[3]={10, 6, 5};
//用原型1计算内积
int result=inner_product(iArray1, iArray1 + 3, iArray2, 0);
cout << "数组iArray1与数组iArray2的内积为" << result << endl;
//用原型2计算内积
result=inner_product(iArray1, iArray1 +3, iArray2, 0, add, mul);
cout << "数组iArray1与数组iArray2的内积为" << result << endl;
return 0;
}
partial_sum
对区间元素进行局部求和,当然也支持DIY
#include <numeric>
#include <algorithm>
#include <iostream>
using namespace std;
void print(int x){
cout << x << ' ';
}
int multiply(int x, int y){
return x * y;
}
int main(void){
int iArray[5]={1, 2, 3, 4, 5};
int iResult[5];
//求和
partial_sum(iArray, iArray+5, iResult);
for_each(iResult, iResult+5, print);
cout << endl;
//计算阶乘
partial_sum(iArray, iArray+5, iResult, multiply);
for_each(iResult, iResult+5, print);
cout << endl;
return 0;
}
adjacent_difference
对相邻元素求差
power
用于进行n次方的计算