Numeric Header Utility Functions in C++

Accumulate Function

The accumulate function performs operations on a sequence:

accumulate(first, last, val, op);

Where first/last are iterators, val is the initial value, and op is the operation (addition, subtraction, etc.).

Example Usage

#include <numeric>
#include <iostream>
#include <vector>
using namespace std;

int main() {
    vector<int> data = {1, 1, 4, 5, 1, 4};
    
    // Sum
    cout << accumulate(data.begin(), data.end(), 0) << endl;
    
    // Product
    cout << accumulate(data.begin(), data.end(), 1, multiplies<int>()) << endl;
    
    return 0;
}

Adjacent Difference

Computes differences between adjacent elements:

adjacent_difference(first, last, result, op);

Example Usage

vector<int> input = {1, 2, 4, 7};
vector<int> output(input.size());

// Default difference
adjacent_difference(input.begin(), input.end(), output.begin());

// Custom operation (sum)
adjacent_difference(input.begin(), input.end(), output.begin(), plus<int>());

Partial Sum

Computes prefix sums:

partial_sum(first, last, result);

Example Usage

vector<int> nums = {1, 2, 3, 4};
vector<int> sums(nums.size());

partial_sum(nums.begin(), nums.end(), sums.begin());
// sums = {1, 3, 6, 10}

Iota Function

Fills a range with incrementing values:

iota(first, last, start_value);

Example Usage

vector<int> sequence(5);
iota(sequence.begin(), sequence.end(), 10);
// sequence = {10, 11, 12, 13, 14}

Mathematical Utilities

C++17 additions:

gcd(x, y);  // Greatest common divisor
lcm(x, y);  // Least common multiple
midpoint(x, y);  // (x + y) / 2

Tags: numeric algorithm cpp17 accumulate partial_sum

Posted on Sun, 12 Jul 2026 16:24:42 +0000 by wherertheskips