zoukankan      html  css  js  c++  java
  • std::accumulate的用法(转)

    std :: accumulate
    累计范围内的值
    返回将范围中的所有值累加[first,last)到init的结果。

    默认操作是向上添加,但可以将不同的操作指定为binary_op。

    accumulate (InputIterator first, InputIterator last, T init, BinaryOperation binary_op);
    1
    参数
    first,last:
    将迭代器输入到序列中的初始位置和最终位置。使用的范围是[first,last),它包含所有的元件第一和最后一个,包括由指向的元件第一但不被指向的元素最后。

    init
    累加器的初始值。

    binary_op
    myfunction (int x, int y);这样的函数时,init传入x,前面的范围和传入y,最后返回函数值。
    std::minus();返回init-范围和
    int operator()(int x, int y);和函数那个一样效果。

    返回值
    累积init:和范围内所有元素的结果[first,last)。

    // accumulate example

    #include <iostream> // std::cout
    #include <functional> // std::minus
    #include <numeric> // std::accumulate

    int myfunction (int x, int y) {return x+2*y;}
    struct myclass {
    int operator()(int x, int y) {return x+3*y;}
    } myobject;

    int main () {
    int init = 100;
    int numbers[] = {10,20,30};

    std::cout << "using default accumulate: ";
    std::cout << std::accumulate(numbers,numbers+3,init);
    std::cout << ' ';

    std::cout << "using functional's minus: ";
    std::cout << std::accumulate (numbers, numbers+3, init, std::minus<int>());
    std::cout << ' ';

    std::cout << "using custom function: ";
    std::cout << std::accumulate (numbers, numbers+3, init, myfunction);
    std::cout << ' ';

    std::cout << "using custom object: ";
    std::cout << std::accumulate (numbers, numbers+3, init, myobject);
    std::cout << ' ';

    return 0;
    }

    编辑并运行

    输出:

    使用默认累积:160
    使用函数的减号:40
    使用自定义功能:220
    使用自定义对象:280
    ————————————————
    版权声明:本文为CSDN博主「臭屁淇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_21567767/article/details/82023752

  • 相关阅读:
    linux下的usb抓包方法【转】
    一个脚本和一个容易疏忽的问题strcmp、strncmp、memcmp的用法【原创】
    牛人博客网址
    linux设备驱动之USB主机控制器驱动分析 【转】
    Linux内核跟踪之syscall tracer 【转】
    Linux内核跟踪之trace框架分析【转】
    该怎样选择框架?
    git 解决冲突的办法
    volley源代码解析(七)--终于目的之Response&lt;T&gt;
    WebLogic(12C)——Server
  • 原文地址:https://www.cnblogs.com/spruce/p/13347654.html
Copyright © 2011-2022 走看看