# std::sortable

< cpp‎ | iterator

定义于头文件 `<iterator>` |  |
template< class I, class R = ranges::less, class P = std::identity > concept sortable = std::permutable<I> && std::indirect_strict_weak_order<R, std::projected<I, P>>; |  | (C++20 起)

`sortable` 概念指定按照 `R` 重排范围到有序范围中的算法的要求。

### 语义要求

std::sortable<I, R, P> 仅若其所蕴含的所有概念均被实现才得以实现。

### 参阅

ranges::sort (C++20) | 将范围按升序排序 (niebloid)
ranges::stable_sort (C++20) | 将范围内的元素排序，同时保持相等的元素之间的顺序 (niebloid)
ranges::partial_sort (C++20) | 排序一个范围的前 N 个元素 (niebloid)
ranges::nth_element (C++20) | 将给定的范围部分排序，确保其按给定元素划分 (niebloid)
ranges::inplace_merge (C++20) | 在原位归并两个有序范围 (niebloid)
ranges::push_heap (C++20) | 将一个元素加入到一个最大堆 (niebloid)
ranges::pop_heap (C++20) | 从最大堆中移除最大元素 (niebloid)
ranges::make_heap (C++20) | 从一个元素范围创建出一个最大堆 (niebloid)
ranges::sort_heap (C++20) | 将一个最大堆变成一个按升序排序的元素范围 (niebloid)
ranges::next_permutation (C++20) | 产生某个元素范围的按字典序下一个较大的排列 (niebloid)
ranges::prev_permutation (C++20) | 产生某个元素范围的按字典序下一个较小的排列 (niebloid)