数值算法:能对 容器数据进行数值计算的算法。
使用数值算法要包含#include<numeric>头文件。
accumulate(first,last,data)
计算first和last范围内数据与data的总和
#include<iostream>
#include<vector>
#include<algorithm>
#include<numeric>
using namespace std;
void main()
{
vector<int>a;
a.push_back (64);
a.push_back (76);
a.push_back (27);
a.push_back (45);
a.push_back (52);
a.push_back (92);
a.push_back (36);
for(int i=0;i<a.size();i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
int result;
result=accumulate(a.begin(),a.end()-2,0); //calculation sum
cout<<"result="<<result<<endl;
system("pause");
}
inner_product(first1,last1,first2,data)
计算first1和last1范围内每个数据与first2容器的相应位置的数据的乘积,然后计算乘积的和与data的总和
#include<iostream>
#include<vector>
#include<algorithm>
#include<numeric>
using namespace std;
void main()
{
vector<int>a;
vector<int>b;
a.push_back (6);
a.push_back (7);
a.push_back (2);
a.push_back (4);
b.push_back (5);
b.push_back (9);
b.push_back (3);
b.push_back (15);
for(int i=0;i<a.size();i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
for(int j=0;j<b.size();j++)
{
cout<<b[j]<<" ";
}
cout<<endl;
int result;
result=inner_product(a.begin(),a.end(),b.begin(),0); //calculation product
cout<<"result="<<result<<endl;
system("pause");
}
partial_sum(first,last,result)
计算first和last范围内每个数与前面的所有数的和,并把结果赋值给result容器
#include<iostream>
#include<vector>
#include<algorithm>
#include<numeric>
using namespace std;
void main()
{
vector<int>a;
a.push_back (6);
a.push_back (7);
a.push_back (2);
a.push_back (4);
a.push_back (5);
a.push_back (9);
a.push_back (3);
for(int i=0;i<a.size();i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
int size;
size=a.size();
vector<int>b(size);
partial_sum(a.begin(),a.end(),b.begin() ); //calculation partial sum
for(int j=0;j<b.size();j++)
{
cout<<b[j]<<" ";
}
cout<<endl;
system("pause");
}
adjacent_difference(first,last,result)
计算first和last范围内相邻数据的差,并把得到的数赋给result容器
#include<iostream>
#include<vector>
#include<algorithm>
#include<numeric>
using namespace std;
void main()
{
vector<int>a;
a.push_back (6);
a.push_back (7);
a.push_back (2);
a.push_back (4);
a.push_back (5);
a.push_back (9);
a.push_back (3);
for(int i=0;i<a.size();i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
int size;
size=a.size();
vector<int>b(size);
adjacent_difference(a.begin(),a.end(),b.begin() ); //calculation the difference adjacent data
for(int j=0;j<b.size();j++)
{
cout<<b[j]<<" ";
}
cout<<endl;
system("pause");
}