std::accumulate的具体用法

简介: std::accumulate的具体用法

std :: accumulate


作用累加求和,对于字符串可以将其连接起来(string类型的加,相当于字符串连接)


头文件


#include <numeric>


原型


accumulate (InputIterator first, InputIterator last, T init, BinaryOperation binary_op);


参数


  • first,last:


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


  • init


累加器的初始值。


  • binary_op


自定义数据类型, accumulate提供了回调函数(第四个参数),来实现自定义数据的处理。


返回值


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


用例1



#include <iostream>     // std::cout
#include <numeric>      // std::accumulate
#include <functional> // std::minus
int myfunction(int x, int y)
{
  return 2 * x + y;
}
int main() {
  int init = 100;
  int numbers[] = { 10,20,30 };
  std::cout << "使用默认 accumulate: ";
  std::cout << std::accumulate(numbers, numbers + 3, init);
  std::cout << '\n';
  std::cout << "使用自定义 custom function accumulate: ";
  std::cout << std::accumulate(numbers, numbers + 3, init, myfunction);
  std::cout << '\n';
  return 0;
}


用例2:Lambda表达式


#include <iostream>
#include <numeric>
#include <vector>
#include <string>
#include <functional>
int main()
{
  std::vector<int> v{ 5,2,1,1,3,1,4 };
  std::string s = std::accumulate(
    std::next(v.begin()),
    v.end(),
    std::to_string(v[0]),
    [](std::string a, int b) {
    return a + '-' + std::to_string(b);
  });
  // 5-2-1-1-3-1-4
  std::cout << s << std::endl;
  return 0;
}


相关文章
|
5月前
|
C++
INT_MIN,max函数和accumulate函数
INT_MIN,max函数和accumulate函数
|
12月前
|
Linux 定位技术 数据安全/隐私保护
【Calculate】Calculate Linux安装操作记录
【Calculate】Calculate Linux安装操作记录
107 0
A. Calculating Function
A. Calculating Function
36 0
|
存储
LeetCode 227. Basic Calculator II
实现一个基本的计算器来计算一个简单的字符串表达式的值。 字符串表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格 。 整数除法仅保留整数部分。
40 0
LeetCode 227. Basic Calculator II
|
算法 容器
常用算术生成算法 accumulate() fill()
常用算术生成算法 accumulate() fill()
Calculating Function
Calculating Function
59 0
Calculating Function
HDU-1012,u Calculate e
HDU-1012,u Calculate e
|
数据可视化
Paraview: Calculate Derivatives of 3-D Unstructured Dataset
关注九天学者微信公众号(扫码关注)第一时间获取技术贴更新! Paraview 是一款基于VTK的、开源的、跨平台的科学数据可视化软件,其三维显示和后处理功能非常强大。
2668 0