zoukankan      html  css  js  c++  java
  • STL之accumulate用法小结

    转自:http://hi.baidu.com/liziyun537/item/84fa271bf73cdf0be75c3660

    函数原型如下:

    #include <numeric>
    TYPE accumulate( iterator start, iterator end, TYPE val );
    TYPE accumulate( iterator start, iterator end, TYPE val, BinaryFunction f );

    第一个原型用来计算变量val和容器中某个区间[start,end)元素之和。

    比如求某个数组所有元素之和:accumulate(&a[0],&a[n],0);    //注意区间为[ ),所以这里为&a[n],而不是&a[n-1]

    accumulate(A.begin(),A.end(),10);    //可以理解为10+A[1]+A[2]+…

    第二个原型相当于函数重载,最后一个参数是为改变求和运算而加载的二元函数,就是让二元函数取代默认的求和运算。

    accumulate(A.begin(),A.end(),10,minus<int>());    //可以理解为10-A[1]-A[2]-…

    这样一个二元函数可以自定义,也可以参考stl_function.h文件中的一些二元函数,比如plus, minus, multiplies, divides, modulus。

    就形参列表而言,虽然变量的位于地址的后面,但理解的时候应该把变量放在前面,因为编译器就是这样做的,简而言之就是val运算符A1运算符A2运算符A3运算符A… 。

  • 相关阅读:
    package.json文件
    Node.js中模块加载机制
    第三方模块
    系统模块
    Node.js快速入门及模块化开发
    String 的扩展方法
    ES6 的内置对象扩展
    箭头函数
    解构赋值
    let、const、var 的区别
  • 原文地址:https://www.cnblogs.com/ACshasow/p/3274820.html
Copyright © 2011-2022 走看看