Namespaces
Variants

std::experimental::ranges:: sort

From cppreference.net
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 ) 内的元素按升序排序。不保证保持相等元素的相对顺序。元素在应用投影 proj 后,使用 comp 进行比较。
2) 对范围 r 中的元素进行排序,如同执行 return ranges:: sort ( ranges:: begin ( r ) , ranges:: end ( r ) , comp, proj ) ;

尽管存在上述声明,算法声明的实际模板参数数量和顺序是未指定的。因此,若在调用算法时使用了显式模板参数,该程序很可能不具备可移植性。

目录

参数

first, last - 要排序的元素范围
r - 要排序的元素范围
comp - 要使用的比较器
proj - 应用于范围内元素的投影

返回值

指向范围末尾之后位置的迭代器(即对于重载 (1) ,它与 last 相等;对于重载 (2) ,它与 ranges::end(r) 相等)。

复杂度

O(N·log(N)) 次比较,其中 N 等于区间内的元素数量。

示例

参见

将范围按升序排序
(函数模板)