不用担心,你没有上当,数据计算,分析一系列的变化非常有用,例如分析股票值的变化,所涉及的就是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;
}

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

被折叠的 条评论
为什么被折叠?



