accumulate() and partial_sum() in C++ STL : Numeric header
The accumulate()
and partial_sum()
are two commonly used functions from the C++ Standard Library’s <numeric>
header for performing operations on sequences of values, typically in a container like a vector or an array.
accumulate()
Function:std::accumulate()
computes the sum of all the elements in a range.
#include <iostream>
#include <vector>
#include <numeric>
int main() {
std::vector<int> numbers = {1, 2, 3, 4, 5};
int sum = std::accumulate(numbers.begin(), numbers.end(), 0);
std::cout << "Sum of elements: " << sum << std::endl;
return 0;
}
In this example, std::accumulate()
adds up all the values in the numbers
vector, starting with an initial value of 0.
partial_sum()
Function:std::partial_sum()
computes the partial sums of the elements in a range and stores them in another range or container.
#include <iostream>
#include <vector>
#include <numeric>
int main() {
std::vector<int> numbers = {1, 2, 3, 4, 5};
std::vector<int> partial_sums(numbers.size());
std::partial_sum(numbers.begin(), numbers.end(), partial_sums.begin());
std::cout << "Partial Sums: ";
for (const int& num : partial_sums) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
In this example, std::partial_sum()
calculates and stores the partial sums in the partial_sums
vector. The output will be “Partial Sums: 1 3 6 10 15,” which are the cumulative sums of the original vector.
Both accumulate()
and partial_sum()
are powerful tools for performing operations on sequences of values, and they can be customized with different binary operators and initial values to perform various calculations beyond simple addition.