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… 。

  • 相关阅读:
    清除cookie
    判断是否为中文
    正则表达式
    smarty基础语法
    smarty模板
    ajax
    php工作笔记1
    PHP中超全局变量$GLOBALS和global的区别
    SQL连表查询
    linux上安装git(客户端)及GitHub的配置
  • 原文地址:https://www.cnblogs.com/ACshasow/p/3274820.html
Copyright © 2011-2022 走看看