×
Traktatov.net » Язык программирования C++. Пятое издание » Читать онлайн
Страница 706 из 714 Настройки
, в противном случае возвращается итератор на элемент, который был скопирован или перемещен из >*beg.

>inplace_merge(beg, mid, end)

>inplace_merge(beg, mid, end, comp)

Объединяет две отсортированные внутренние последовательности из той же последовательности в единую, упорядоченную последовательность. Внутренние последовательности от >beg до >mid и от >mid до >end объединяются и записываются назад в первоначальную последовательность. Первая версия использует для сравнения элементов оператор ><, а вторая версия использует заданную операцию сравнения. Возвращают >void.

А.2.5. Алгоритмы сортировки и разделения

Алгоритмы сортировка и разделения предоставляют различные стратегии упорядочивания элементов последовательности.

Каждый алгоритм сортировки и разделения поддерживает стабильные и нестабильные версии (см. раздел 10.3.1). Стабильный алгоритм обеспечивает относительный порядок равных элементов. Стабильные алгоритмы выполняют больше работы, а следовательно, могут выполняться медленней и использовать больше памяти, чем нестабильные аналоги.

Алгоритмы разделения

Алгоритмы разделения делят элементы исходного диапазона на две группы. Первая группа состоит из элементов удовлетворяющих определенному предикату, а вторая — нет. Например, элементы последовательности можно разделить на основании четности их значений или на основании того, начинается ли слово с заглавной буквы, и так далее. Этим алгоритмам требуются двунаправленные итераторы.

>is_partitioned(beg, end, unaryPred)

Возвращает значение >true, если все элементы, удовлетворяющие предикату >unaryPred, предшествуют тем, для которых предикат >unaryPred возвращает значение >false. Если последовательность пуста, также возвращается значение >true.

>partition_copy(beg, end, dest1, dest2, unaryPred)

Копирует в >dest1 элементы, для которых истин предикат >unaryPred, а остальные копирует в >dest2. Возвращает пару (см. раздел 11.2.3) итераторов. Член >first пары обозначает конец скопированных в >dest1 элементов, а член >second обозначает конец элементов, скопированных в >dest2. Исходная последовательность не может налагаться ни на одну из результирующих последовательностей.

>partition_point(beg, end, unaryPred)

Для разделения исходной последовательности используется предикат >unaryPred. Возвращает итератор на элемент за последним, удовлетворяющим предикату >unaryPred. Если возвращен итератор не >end, то предикат >unaryPred должен возвращать значение >false для возвращенного итератора и для всех элементов, следующих за ним.

>stable_partition(beg, end, unaryPred)

>partition(beg, end, unaryPred)

Для разделения исходной последовательности используется предикат >unaryPred. Элементы, для которых истин предикат >unaryPred, помещаются в начало последовательности, а остальные в конец. Возвращает итератор на элемент за последним, удовлетворяющим предикату >unaryPred, или итератор >beg, если таких элементов нет.

Алгоритмы сортировки

Этим алгоритмам требуются итераторы прямого доступа. Каждый из алгоритмов сортировки предоставляется в двух перегруженных версиях. В одной из них для сравнения элементов используется оператор