std::partial_sum

From Cppreference

Jump to: navigation, search
Defined in header <numeric>

template< class InputIterator, class OutputIterator >
OutputIterator partial_sum( InputIterator first, InputIterator last, OutputIterator d_first );
(1)
template< class InputIterator, class T, class BinaryOperation >

OutputIterator partial_sum( InputIterator first, InputIterator last, OutputIterator d_first,

                            BinaryOperation op );
(2)

Computes the partial sums of the elements in the subranges of the range [first, last) and writes them to the range beginning at d_first. Each The first version uses operator+ to sum up the elements, the second version uses the given binary function op.

Equivalent operation:

*(d_first)   = *first;
*(d_first+1) = *first + *(first+1);
*(d_first+2) = *first + *(first+1) + *(first+2);
*(d_first+3) = *first + *(first+1) + *(first+2) + *(first+3);
...​

Contents

Parameters

first, last - the range of elements to sum
d_first - the beginning of the destination range
op - binary operation function object that will be applied.

The signature of the function should be equivalent to the following:

​Ret fun(const Type1 &a, const Type2 &b);

The signature does not need to have const &.
The type ​Type1​ must be such that an object of type ​T​ can be implicitly converted to ​Type1​. The type ​Type2​ must be such that an object of type ​InputIterator​ can be dereferenced and then implicitly converted to ​Type2​. The type ​Ret​ must be such that an object of type ​T​ can be assigned a value of type ​Ret​. ​

Return value

Iterator to the element past the last element written.

Equivalent function

Example

See also

adjacent_difference
computes the differences between adjacent elements in a range
(function template)
accumulate
sums up a range of elements
(function template)
Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox
In other languages