Глава 18. Классы-контейнеры_________________________________479
template <class Bidirectional-Iterator]., class Bidirectionallterator2> Bidirectionallterator2 copy_backward (Bidirectionallteratorl first, Bidirectionallteratorl last, Bidirectionallterator2 result);
swap. Как видно из названия ("swap" означает "менять", — прим. перев.), swap меняет местами содержимое а и ь. Он использует операцию =, определенную для класса т.
template <class T> void (T& а,Т& Ь) ;
inter_swap. Выполняет то же, что и swap, но принимает в качестве аргументов два итератора. Содержимое объекта, на который указывает а меняется с содержимым объекта, на который указывает и.
template <class Forwardlteratorl, class Forwardlterator2> void iter_swap (Forwardlteratorl a, E'orwardlterator2 b) ; •
swap_ranges. Алгоритм swap_ranges меняет местами элементы диапазона
[firsti, lasti) с элементами диапазона [first2, first2+(lastl - firsti)]. Во время своей работы использует алгоритм inter_swap. Возвращаемое значение — итератор first2+(lastl-firstl)
template <class Forwardlteratorl, class Forwardlterator2> Forwardlterator2 swap__ranges (Forwardlteratorl firsti Forwardlteratorl lasti, Forwardlterator2 first2);
transform. В первой версии алгоритма transform унарная функция ор вызывается для каждого элемента из диапазона [first, last), а результат помещается в диапазон [result, resuit+ (last-first)). Тип единственного аргумента функции ор должен быть таким же, как и тип элемента, на который указывают first и last. Вторая версия transform использует две входные последовательности с диапазонами [firsti, lasti) и [first2, last2) как аргументы для бинарной функции binary_op, и помещает результат в диапазон [result, resuit+(lasti - firsti)).
template <class Inputlterator, class Output Iterator, class Unary0peration> Output Iterator transform (Inputlterator first, ,
Inputlterator last,
Outputlterator result,
UnaryOperation op);
template <class Inputlteratorl, class Inputlterator2, class Outputlterator, class Binary0peration>