482 Часть ///. Современное программирование на C++
unique. Алгоритм unique удаляет все элементы в последовательности кроме первого, которые удовлетворяют условию равенства или для которых бинарная функция binary_op( element, element+i) возвращает значение "истинно". Проверка на равенство производится с использованием операции =, определенной для данных объектов. Также как для алгоритма remove входная последовательность сжимается, но элементы не уничтожаются. Неиспользованные элементы в конце входной последовательности остаются и могут быть удалены пользователем. Для этой цели можно применить значение, возвращаемое unique.
template <class Forwardlterator> Forwardlterator unique (Forwardlterator first, Forwardlterator last);
template <class Forwardlterator, BinaryPredicate> Porwardlterator unique (Forwardlterator first,
Forwardlterator last,
BinaryPredicate binary_pred) ;
template <class Inputlterator, class OutputIterator> Outputlterator unique copy (Inputlterator first,
Inputlterator last,
Outputlterator result);
template <class Inputlterator, class Outputlterator,
class BinaryPredicate> Outputlterator unique_copy (Inputlterator first,
Inputlterator last,
Outputlterator result,
BinaryPredicate binary_pred) ;
Версия unique_copy отличается от версии unique тем, что результаты копируются в выходную последовательность. Возвращаемое значение указывает на элемент следующий за последним из скопированных в выходную последовательность.
reverse. Алгоритм reverse использует iter_swap для размещения элементов входной последовательности [first, last) в обратном порядке. Версия reverse _сору помещает результаты операции в последовательность [result,
resuit+(last — first)).
template <class Bidirectionallterator> void reverse (Bidirectionallterator first, Bidirectionallterator last) ;
template <class Bidirectionallterator, class OutputIterator> Outputlterator reverse copy (Bidirectionallterator first,
Bidirectionallterator last,
Outputlterator result);