std::experimental::ranges::sort

来自cppreference.com
< cpp‎ | experimental‎ | ranges
 
 
实验性
技术规范
文件系统库 (文件系统 TS)
库基础 (库基础 TS)
库基础 2 (库基础 TS v2)
库基础 3 (库基础 TS v3)
并行扩展 (并行 TS)
并行扩展 2 (并行 TS v2)
并发扩展 (并发 TS)
并发扩展 2 (并发 TS v2)
概念 (概念 TS)
范围 (范围 TS)
反射 (反射 TS)
数学特殊函数 (特殊函数 TR)
实验性非 TS 功能特性
模式匹配
线性代数
std::execution
契约
2D 图形
 
 
 
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) (范围 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) (范围 TS)
1) 以升序排序范围 [firstlast) 中的元素。不保证保持相等元素的顺序。在应用投射 proj 后用 comp 比较元素。
2) 排序范围 r 中的元素,如同用 return ranges::sort(ranges::begin(r), ranges::end(r), comp, proj);

尽管声明描述如上,算法声明的模板形参的实际数量和顺序是未指定的。从而若在调用算法时使用显式模板实参,则程序很可能不可移植。

参数

first, last - 要排序的元素范围
rng - 要排序的元素范围
comp - 要使用的比较器
proj - 要应用到范围中元素的投射

返回值

指向范围尾后一位置的迭代器(即它对于重载 (1) 等于 last,对于重载 ranges::end(rng) 等于 (2))。

复杂度

O(N·log(N)) 次比较,其中 N 等于范围中的元素数。

示例

参阅

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