目录
STL的sort函数非常常用,不同的STL版本有不同的实现方式,本文就来说一下SGI STL中是如何实现sort函数的。
sort函数所采用的排序方法并非是“一种”,而是“多种”排序算法的“混合物”。在SGI STL的版本中,对一个序列调用sort函数,那么这个序列可能会经历插入排序、快速排序和堆排序,其中最为核心的是快速排序。每种排序方式都是在特定情况下使用的,搭配使用从而更加高效。
支持sort的容器
由于需要使用到这么多的排序方式,因此调用sort函数的容器必须支持“Random access iterator”(如果不能随机访问,那么快排选取枢轴会受到极大限制),即随机访问迭代器(即支持迭代器++、--和+=、-=)。在众多STL容器中,由于红黑树的迭代器是一个双向迭代器(仅支持++、--),