29 Numerics library [numerics]

29.8 Generalized numeric operations [numeric.ops]

29.8.6 Partial sum [partial.sum]

template <class InputIterator, class OutputIterator> OutputIterator partial_sum( InputIterator first, InputIterator last, OutputIterator result); template <class InputIterator, class OutputIterator, class BinaryOperation> OutputIterator partial_sum( InputIterator first, InputIterator last, OutputIterator result, BinaryOperation binary_op);

Requires: InputIteratorТип значения должен быть сконструирован из типа *first. Результат выражения acc + *i или binary_­op(acc, *i) должен быть неявно преобразован в InputIteratorтип значения. acc должен быть writable к result итератору вывода. В диапазонах [first, last] и [result, result + (last - first)] binary_­op не должен изменять элементы или делать недействительными итераторы или поддиапазоны.284

Effects: Для непустого диапазона функция создает аккумулятор acc , тип которого является InputIteratorтипом значения, инициализирует его *firstи присваивает результат *result. Для каждого итератора i по [first + 1, last) порядку acc затем модифицируется с помощью acc = acc + *i или, acc = binary_­op(acc, *i) а результат присваивается *(result + (i - first)).

Returns: result + (last - first).

Complexity: Собственно (last - first) - 1 применения бинарной операции.

Remarks: result может быть равно first.

Использование полностью замкнутых диапазонов является преднамеренным.