Глава 18. Классы-контейнеры_________________________________493

сия применяет операцию binary_op(init, element) ко всем элементам последовательности и присваивает результат init.

template <class Inputlterator, class T> Т accumulate (Inputlterator first,Inputlterator last, Т init);

template <class Inputlterator, class T, class BinaryOperation > Т accumulate (Inputlterator first,Inputlterator last, T init, BinaryOperation binary_op);

while (first != last) init = binary_op(init, *first++);

inner_product. Суммирует произведения элементов двух последовательностей и возвращает накопленный результат. Во второй версии для суммирования используется binary_opl, а для умножения — binary_op2.

template <class Inputlteratorl,Inputlterator2, class T> T inner_product (Inputlteratorl firsti, Inputlteratorl lasti,

Inputlterator2 first2, T init);

*

template <class Inputlteratorl,Inputlterator2, class T,

class BinaryOperationI, Binary0peration2> T inner_product (Inputlteratorl firsti, Inputlteratorl lasti,

Inputlterator2 first2, T init,

BinaryOperationI binary opi,

Binary0peration2 binary_op2) ;

while (firsti \= lasti) init = binary opi(init, binary op2(*firstl++, *first2++) ;

partiaLsum. Создает выходную последовательность, которая строится как текущая сумма элементов входной последовательности. Элементами результирующей последовательности будут *first, *first + *(first+l) и т. д. Вторая версия алгоритма использует определяемую пользователем функцию binary_op вместо операции сложения. Возвращается указатель на элемент следующий за последним элементом, записанным в выходную последовательность.

template <class Inputlterator, class OutputIterator> Output Iterator partial sum (Inputlterator first,

Inputlterator last,

Outputlterator result) ;

template <class Inputlterator, class Outputlterator,

class Binary0peration> Outputlterator partial_sum (Inputlterator first,

Inputlterator last, '

Outputlterator result,

BinaryOperation binary_op) ;

adjacent_difference. Создает последовательность разностей между соседними элементами входной последовательности [first, last). Результирую-