STL算法-numeric

来源:互联网 发布:ug8.0编程视频教程全集 编辑:程序博客网 时间:2024/04/27 09:58

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次方的计算

原创粉丝点击