C++ 的排序算法和相关工具
如果只有一两种排序方法能够统治其他所有方法,无论应用程序或使用的计算机如何,那就太好了。但事实上,每种方法都有其独特的优点。 […] 因此,我们发现几乎所有的算法都值得记住,因为在某些应用程序中,它们表现得最好。 — Donald Knuth,《计算机程序设计艺术》,第三卷
即使在不使用额外功能的情况下,这些排序函数仍然提供了一些有趣的保证(通常来自 Ranges TS): * 它们提供了迭代器和范围接口 * 如果可能,它们接受自定义比较器参数 * 大多数都接受投影参数 * 它们正确处理带有 iter_swap 和 iter_move 的代理迭代器 * 当迭代器不提供后增量和后减量时,它们也能正常工作 * 要排序的集合的值类型不必是默认构造的 * 要排序的集合的值类型不必是可复制的(只能移动) * 无状态排序器可以转换为每个重载的 operator() 函数指针 * 排序器是函数对象:它们可以直接作为“重载集”传递给其他函数
您可以在 [wiki][cpp-sort-wiki] 中阅读有关所有可用工具的更多信息,并找到有关使用和扩展 cpp-sort 的一些教程。
暂无开放 Issues,或尚未同步最近议题。