C++ Numeric::accumulate() 函数



C++ 的std::complex::accumulate() 函数用于计算范围内的元素之和或执行其他操作。它接受三个参数:起始和结束迭代器以及累加的初始值。默认情况下,它会将元素添加到初始值,但可以提供自定义二元运算(如乘法或减法)作为第四个参数。

语法

以下是 std::numeric::accumulate() 函数的语法。

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

参数

  • first, last − 指示序列中初始和最终位置的迭代器。
  • init − 累加器的初始值。
  • binary_op − 二元运算符。

返回值

它返回将范围 [first,last) 中的所有值累加到 init 的结果。

异常

如果 binary_op、赋值或迭代器上的任何操作抛出异常,则会抛出异常。

数据竞争

区域设置对象被修改。

示例 1

在以下示例中,我们将考虑 accumulate() 函数的基本用法。

#include <iostream>
#include <numeric>
#include <vector>
int main() {
   std::vector < int > x = {11,22,3};
   int a = std::accumulate(x.begin(), x.end(), 0);
   std::cout << "Result : " << a << std::endl;
}

输出

上述代码的输出如下所示:

Result : 36

示例 2

考虑以下示例,我们将对元素进行乘积运算。

#include <iostream>
#include <numeric>
#include <vector>
int main() {
   std::vector < int > a = {11,2,12};
   int x = std::accumulate(a.begin(), a.end(), 1, std::multiplies < int > ());
   std::cout << "Result : " << x << std::endl;
}

输出

以下是上述代码的输出:

Result : 264

示例 3

让我们看下面的例子,我们将得到奇数元素的总和。

#include <iostream>
#include <numeric>
#include <vector>
int main() {
   std::vector < int > a = {1,2,3,4,5};
   int x = std::accumulate(a.begin(), a.end(), 0, [](int sum, int x) {
      return x % 2 != 0 ? sum + x : sum;
   });
   std::cout << "Result : " << x << std::endl;
}

输出

如果我们运行以上代码,它将生成以下输出:

Result : 9
numeric.htm
广告