Глава 18. Классы-контейнеры_________________________________483
rotate. Алгоритм rotate принимает входную последовательность [first, middle-l] + [middle, last-l] и меняет порядок в секциях последовательно-сти так, чтобы получить выходную последовательность вида [middle, last-l] + [first, middle-l]. rotate_copy помещает результат в выходную последовательность, вместо изменения входной последовательности. Версия copy возвращает указатель на элемент, следующий за последним в выходной последовательности.
template <class Forwardlterator>
void rotate (Forwardlterator first, Forwardlterator middle, Forwardlterator last) ;
template <class Forwardlterator, class OutputIterator> Outputlterator rotate_copy (Forwardlterator first,
Forwardlterator middle,
Forwardlterator last,
Outputlterator result) ;
random_shuffle. Алгоритм random_shuffle случайным образом переставляет элементы во входной последовательности. Вторая версия использует предлагаемый пользователем генератор случайных чисел. Такой генератор должен принимать целое п и возвращать число между о и n-l.
template <class RandomAccessIterator> void random shuffle (RandomAccessIterator first, RandomAccessIterator last) ;
template <class RandomAccessIterator, RandomNumberGenerator> void random_shuffle (RandomAccessIterator first,
RandomAccessIterator last
RandomNumberGenerator& rand) ;
partition. Разделяет элементы входной последовательности [first, last) на две группы. Первую группу составляют элементы, для которых pred (element) истинна, эти элементы помещаются в первой части последовательности. Остальные составляют вторую группу и помещаются во вторую часть последовательности. Версия алгоритма, называемая устойчивой (stable), в дополнение к указанным операциям упорядочивает элементы внутри групп. Возвращаемое значение для обеих версий указывает на первый элемент второй группы.
template <class Bidirectionallterator, class Predicate> Bidirectionallterator partition (Bidirectionallterator first,
Bidirectionallterator last,
Predicate pred);
template <class Bidirectionallterator, class Predicate> Bidirectionallterator stable_partition
^(Bidirectionallterator first, Bidirectionallterator last, Predicate pred) ;
16*