|
MSTL 1.4.0
A Modern C++ Library with extended functionality, web components, and utility libraries
|
MSTL分区算法的实现 更多...
函数 | |
| template<typename Iterator, typename Predicate, enable_if_t< is_ranges_bid_iter_v< Iterator >, int > = 0> | |
| constexpr Iterator | partition (Iterator first, Iterator last, Predicate pred) |
| 分区算法 | |
| template<typename Iterator, typename T, typename Compare, enable_if_t< is_ranges_rnd_iter_v< Iterator >, int > = 0> | |
| constexpr Iterator | lomuto_partition (Iterator first, Iterator last, const T &pivot, Compare comp) |
| Lomuto分区算法 | |
| template<typename Iterator, typename T> | |
| constexpr Iterator | lomuto_partition (Iterator first, Iterator last, const T &pivot) |
| Lomuto分区算法 | |
MSTL分区算法的实现
|
constexpr |
Lomuto分区算法
| Iterator | 随机访问迭代器类型 |
| T | 基准值类型 |
| first | 范围起始 |
| last | 范围结束 |
| pivot | 基准值 |
在文件 partition.hpp 第 105 行定义.
引用了 _MSTL , 以及 lomuto_partition().
|
constexpr |
Lomuto分区算法
| Iterator | 随机访问迭代器类型 |
| T | 基准值类型 |
| Compare | 比较函数类型 |
| first | 范围起始 |
| last | 范围结束 |
| pivot | 基准值 |
| comp | 比较函数对象 |
Lomuto分区算法,常用于快速排序。 将范围重新排列,使得所有小于基准值的元素出现在基准值之前或等于基准值的元素之前, 所有大于基准值的元素出现在基准值之后。
算法步骤:
在文件 partition.hpp 第 83 行定义.
引用了 _MSTL , 以及 iter_swap().
被这些函数引用 introspective_sort(), lomuto_partition(), nth_element() , 以及 quick_sort().
|
constexpr |
分区算法
| Iterator | 迭代器类型 |
| Predicate | 谓词类型 |
| first | 范围起始 |
| last | 范围结束 |
| pred | 一元谓词 |
将范围 [first, last) 重新排列,使得所有满足谓词 pred 的元素都出现在不满足谓词的元素之前。 不保证相同类别的元素保持原始相对顺序。
算法使用双向迭代器,从两端向中间扫描:
在文件 partition.hpp 第 40 行定义.
引用了 _MSTL , 以及 iter_swap().