STL源码分析:浅析list的sort函数

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

目录

原理说明

举例说明

总结


       虽然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都必须事先满足严格弱排序),相当于是合并两个有序链表

原理说明

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值