std::accumulate的用法(转)

Posted spruce

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于std::accumulate的用法(转)的主要内容,如果未能解决你的问题,请参考以下文章

C++ STL应用与实现86: 如何使用std::accumulate

std::accumulate

std::accumulate() 仅是复数 std::vector 的实部

如何将 std::accumulate 用于矩阵

性能差异:std :: accumulate vs std :: inner_product vs Loop

std::string,std::vector,std::accumulate注意事项