目录
虽然STL中提供了标准的sort函数,但是它只适用于随机存取的容器,而显然list并不是这样的容器,因此list提供了专用的链表排序函数,虽然同样名为sort,但是这个sort函数是list类的成员函数。
在分析list的sort函数之前,有必要先简单了解一下list其它几个相关的成员函数。
swap函数:传入参数为一个list时,函数作用是将当前list和参数list互换;
splice函数:传入的第一和第三参数为迭代器(分别记为X和Y),第二个参数为一个list时,函数作用是把参数list中Y迭代器所指的元素移动到当前list的X迭代器所指的位置,移动后参数list中不再存在该元素;
merge函数:传入参数为一个list和一个比较函数cmp时,函数的作用是把参数list和当前list按照比较函数cmp进行排序,这个函数结果正确的前提是参数list和当前list均必须事先满足cmp所定义的排序方式(如果cmp是严格弱排序比较,那么两个list都必须事先满足严格弱排序),相当于是合并两个有序链表。
原理说明
现在来看sort函数:
template <class _Tp, class _Alloc> template <class _StrictWeakOrdering>
void list

本文详细介绍了STL中list容器的sort成员函数工作原理。由于list不是随机存取容器,因此它的sort使用了专门的算法,本质上是一个归并排序过程。文章通过原理说明和举例解释,展示了如何对list元素进行排序,包括涉及到的swap、splice和merge函数,以及在排序过程中如何利用counter数组存储和合并有序链表,最终达到排序目的。
最低0.47元/天 解锁文章
2565

被折叠的 条评论
为什么被折叠?



