Namespaces
Variants

std::experimental::ranges:: sort

From cppreference.net
Определено в заголовке <experimental/ranges/algorithm>
template < RandomAccessIterator I, Sentinel < I > S,

class Comp = ranges:: less <> , class Proj = ranges:: identity >
requires Sortable < I, Comp, Proj >

I sort ( I first, S last, Comp comp = Comp { } , Proj proj = Proj { } ) ;
(1) (ranges TS)
template < RandomAccessRange R,

class Comp = ranges:: less <> , class Proj = ranges:: identity >
requires Sortable < ranges:: iterator_t < R > , Comp, Proj >

ranges:: safe_iterator_t < R > sort ( R && r, Comp comp = Comp { } , Proj proj = Proj { } ) ;
(2) (ranges TS)
1) Сортирует элементы в диапазоне [ first , last ) в порядке возрастания. Порядок равных элементов не гарантируется. Элементы сравниваются с помощью comp после применения проекции proj .
2) Сортирует элементы в диапазоне r , как если бы с помощью return ranges:: sort ( ranges:: begin ( r ) , ranges:: end ( r ) , comp, proj ) ; .

Несмотря на приведённые выше объявления, фактическое количество и порядок параметров шаблона для объявлений алгоритмов не определено. Таким образом, если при вызове алгоритма используются явные аргументы шаблона, программа, вероятно, является непереносимой.

Содержание

Параметры

first, last - диапазон элементов для сортировки
r - диапазон элементов для сортировки
comp - компаратор для использования
proj - проекция для применения к элементам диапазона

Возвращаемое значение

Итератор, указывающий за конец диапазона (т.е. он сравнивается равным last для перегрузки (1) , и ranges::end(r) для перегрузки (2) ).

Сложность

O(N·log(N)) сравнений, где N равно количеству элементов в диапазоне.

Пример

Смотрите также

сортирует диапазон в порядке возрастания
(шаблон функции)