1. accumulate()可以用来计算数组或者容器中的内置数据类型;
2. #include<numeric.h>
3. 常用例子:
int arr[]={1,2,3,4};
<pre name="code" class="cpp"> vector<int> num(<span style="font-family: Arial, Helvetica, sans-serif;">&arr[0], &arr[4]</span><span style="font-family: Arial, Helvetica, sans-serif;">); //数组对容器进行初始化</span>
int result1 = accumulate(num.begin(),num.end(),0);int result2 = accumulate(&arr[0], &arr[4],0);
- 注意1:accumulate()一共有四个参数:第一个参数指需要求和的第一个地址;第二个参数值需要求和的第二个地址;第三个参数表示求和的初始值(一般为0);第四个参数指自己定义。
- 注意2:accumulate()是左闭右开的;[ )
4. 如果需要求和自己定义的数据类型,则需要重载();
struct Student
{
string name;
double total;
//Student(string na, double to):name(na),total(to){}
double operator () (double base, const Student &stu)
{
return base+stu.total;
}
};
int main()
{
//Student stu[2]={{"zhangsan",97.5}, {"lisi",92.3}}; 注意vc6编译器不支持对结构体进行一次性初始化,需要进行分开初始化
Student stu[2];
stu[0].name = "zhangsan";
stu[0].total = 97.3;
stu[1].name = "lisi";
stu[1].total = 95.5;
double result = accumulate(&stu[0], &stu[2], 0.0, Student() ); //注意:这儿是double,所以第三个参数必须写成0.0,不然会四舍五入了
cout<<result<<endl;
return 0;
}