C++STL算法

说完了排序算法接下来就剩下数值算法(numeric algorithms).

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


v1.insert(v1.end(), v2.begin(), v2.end() );


转载:http://hi.baidu.com/642168618/blog/item/70b59460a67cded38cb10d02.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值