# std::experimental::ranges::sort

< cpp‎ | experimental‎ | ranges

定义于头文件 `<experimental/ranges/algorithm>` |  |
template< ranges::RandomAccessIterator I, ranges::Sentinel<I> S, class Comp = ranges::less<>, class Proj = ranges::identity> requires ranges::Sortable<I, Comp, Proj> I sort( I first, S last, Comp comp = Comp{}, Proj proj = Proj{} ); | (1) | (范围 TS)
template< ranges::RandomAccessRange Rng, class Comp = ranges::less<>, class Proj = ranges::identity> requires ranges::Sortable<ranges::iterator_t<Rng>, Comp, Proj> ranges::safe_iterator_t<Rng> sort( Rng&& rng, Comp comp = Comp{}, Proj proj = Proj{} ); | (2) | (范围 TS)

1) 以升序排序范围 `[first, last)` 中的元素。不保证保持相等元素的顺序。在应用投影 `proj` 后用 `comp` 比较元素。
2) 排序范围 `rng` 中的元素，如同用 return ranges::sort(ranges::begin(rng), ranges::end(rng), comp, proj); 。

### 参数

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

### 返回值

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

### 复杂度

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

### 示例

| 本节未完成 原因：暂无示例

### 参阅

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