【STL】list容器底层实现及特点

【STL】list容器底层实现及特点,第1张

【STL】list容器底层实现及特点 底层实现

容器的底层是以双向链表的形式实现的。


node表示链表的头指针,list容器的迭代器 *** 作通过前后指针完成重载,支持双向迭代器。


各个元素的前后顺序是靠指针来联系的,每个元素都配备了 2 个指针,分别指向它的前一个元素和后一个元素。


其中第一个元素的前向指针总为 null,因为它前面没有元素;同样,尾部元素的后向指针也总为 null。


特点

因为元素使用链表存储,所以使用 list 容器的缺点是,它不能像 array 和 vector 那样,通过位置直接访问元素,例如使用 vector.at() 函数或 array[ i ] 直接通过下标来访问,只能从头结点或尾结点遍历完成访问。


优点是插入和删除元素更加快速,不需要遍历整个容器去完成元素的移动,时间复杂度仅为O(1)


与其他序列式容器不同,因为独有的双向链表结构,list容器有一些独有的成员函数。


函数名称
splice()将一个 list 容器中的元素插入到另一个容器的指定位置。


remove(val)删除容器中所有等于 val 的元素。


remove_if()删除容器中满足条件的元素。


unique()删除容器中相邻的重复元素,只保留一个。


merge()合并两个事先已排好序的 list 容器,并且合并之后的 list 容器依然是有序的。


sort()通过更改容器中元素的位置,将它们进行排序。


reverse()反转容器中元素的顺序。


具体用法详见list容器的插入与删除

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/langs/563279.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-02
下一篇 2022-04-02

发表评论

登录后才能评论

评论列表(0条)

保存