numeric下的牛逼,可以炒股了。

本文详细介绍了C++中四个重要的数值计算函数:accumulate、inner_product、adjacent_difference 和 partial_sum 的使用方法,并通过具体代码示例展示了这些函数如何帮助进行高效的数据分析与计算。

不用担心,你没有上当,数据计算,分析一系列的变化非常有用,例如分析股票值的变化,所涉及的就是numeric的计算,请看,相信你不再害怕查文档,不再害怕函数原型

分别解说:

下面是函数原型,不要被函数原型吓到了,下面有具体的代码。

1

template<class InIt, class T>
T accumulate(InIt first, InIt last, T val);
template<class InIt, class T, class Pred>
T accumulate(InIt first, InIt last, T val, Pred pr);

2

template<class InIt1, class InIt2, class T>
T product(InIt1 first1, InIt1 last1,
Init2 first2, T val);
template<class InIt1, class InIt2, class T,
class Pred1, class Pred2>
T product(InIt1 first1, InIt1 last1,
Init2 first2, T val, Pred1 pr1, Pred2 pr2);
3
template<class InIt, class OutIt>
OutIt adjacent_difference(InIt first, InIt last,
OutIt result);
template<class InIt, class OutIt, class Pred>
OutIt adjacent_difference(InIt first, InIt last,
OutIt result, Pred pr);
4

template<class InIt, class OutIt>
OutIt partial_sum(InIt first, InIt last,
OutIt result);
template<class InIt, class OutIt, class Pred>
OutIt partial_sum(InIt first, InIt last,
OutIt result, Pred pr);

一:accumulate

#include<iostream>
#include<string>
#include<numeric>
#include<vector>
#include<functional>
using namespace std;
int jiayibai(int a,int b){
 return a+b*2;
}
int main(){
 int a[]={1,2,3,4,5,6,7,8,9,10};
 vector<int>v(a,a+10);
 int sum=accumulate(v.begin(),v.end(),0);
 cout<<sum<<endl;
 int sum1=accumulate(v.begin(),v.end(),0,jiayibai);
 cout<<sum1<<endl;
 int sum2=accumulate(v.begin(),v.end(),0,minus<int>());
 cout<<sum2<<endl;
 system("pause");
 return 0;
}

二:inner_product

#include<iostream>
#include<string>
#include<vector>
#include<functional>
#include<numeric>
using namespace std;
int xiangjian (int x, int y) {return x-y;}
int xiangjia (int x, int y) {return x+y;}

int main(){
 int a[]={1,2,3,4,5};
 int b[]={5,4,3,2,1};
 vector<int>v(a,a+5);
 vector<int>vv(b,b+5);
 int ji1=inner_product(v.begin(),v.end(),vv.begin(),0);
 cout<<ji1<<endl;
 int ji2=inner_product(v.begin(),v.end(),vv.begin(),0,xiangjian,xiangjia);
 cout<<ji2<<endl;
 int ji3=inner_product(v.begin(),v.end(),vv.begin(),0,minus<int>(),divides<int>());
 cout<<ji3<<endl;
 system("pause");
 return 0;
}

三:adjacent_difference

#include<iostream>
#include<string>
#include<vector>
#include<numeric>
using namespace std;
int xiangjia(int a,int b){
 return a+b;
}
int main(){
 int a[]={1,3,5,7,10};
 vector<int>v(a,a+5);
 vector<int>vv(5);
 adjacent_difference(v.begin(),v.end(),vv.begin());
 for(vector<int>::iterator itera=vv.begin();itera!=vv.end();++itera){
  cout<<*itera<<" ";
 }
 cout<<endl;
 adjacent_difference(v.begin(),v.end(),vv.begin(),xiangjia);
 for(vector<int>::iterator iterb=vv.begin();iterb!=vv.end();++iterb){
  cout<<*iterb<<" ";
 }
 cout<<endl;
 adjacent_difference(v.begin(),v.end(),vv.begin(),minus<int>());
 for(vector<int>::iterator iterc=vv.begin();iterc!=vv.end();++iterc){
  cout<<*iterc<<" ";
 }
 cout<<endl;
 system("pause");
 return 0;
}

四:partial_sum

#include<iostream>
#include<string>
#include<vector>
#include<numeric>
#include<functional>
using namespace std;
int xiangjia(int a,int b){
 return a+b;
}
int main(){
 int a[]={4,5,7,3,6};
 vector<int>v(a,a+5);
 vector<int>vv(5);
 partial_sum(v.begin(),v.end(),vv.begin(),xiangjia);
 for(vector<int>::iterator itera=vv.begin();itera!=vv.end();++itera){
  cout<<*itera<<" ";
 }
 cout<<endl;
 partial_sum(v.begin(),v.end(),vv.begin());
 for(vector<int>::iterator iterb=vv.begin();iterb!=vv.end();++iterb){
  cout<<*iterb<<" ";
 }
 cout<<endl;
 partial_sum(v.begin(),v.end(),vv.begin(),multiplies<int>());
 for(vector<int>::iterator iterc=vv.begin();iterc!=vv.end();++iterc){
  cout<<*iterc<<" ";
 }
 cout<<endl;
 system("pause");
 return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值