C++ Numeric::accumulate() function



The C++ std::complex::accumulate() function is used to calculate the sum or to perform other operations on the elements within a range. It takes three arguments: the starting and ending iterator and an initial value for the accumulation. By default, it will add the elements to the initial value, but a custom binary operation such as multiplication or subtraction can be provided as fourth argument.

Syntax

Following is the syntax for std::numeric::accumulate() function.

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

Parameters

  • first, last − It indicates the iterators to the initial and final positions in a sequence.
  • init − It is an initial value for the accumulator.
  • binary_op − It is binary operation.

Return Value

It returns the result of accumulating all the values in the range [first,last) to init.

Exceptions

It throws if any of binary_op, the assignments or an operation on an iterator throws.

Data races

The locale object is modified.

Example 1

In the following example, we are going to consider the basic usage of the accumulate() function.

#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;
}

Output

Output of the above code is as follows −

Result : 36

Example 2

Consider the following example, where we are going to make the product of the elements.

#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;
}

Output

Following is the output of the above code −

Result : 264

Example 3

Let's look at the following example, where we are going to get the sum of the odd elements.

#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;
}

Output

If we run the above code it will generate the following output −

Result : 9
numeric.htm
Advertisements