STL:accumulate

来源:互联网 发布:subnautica mac下载 编辑:程序博客网 时间:2024/05/17 20:54

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;}  

0 0