【C++从入门到入土】第十四篇:list的介绍与使用

本文详细介绍了C++ STL中的list容器,包括其构造原理、正反向迭代器的应用、范围for循环、插入删除操作、元素去重和链表合并等实用技巧。特别关注了list在添加删除元素方面的高效性,适合处理频繁变动的数据序列。
摘要由CSDN通过智能技术生成

list的介绍与使用



一、list的介绍

STL list 容器,又称双向链表容器,即该容器的底层是以双向链表的形式实现的。这意味着,list 容器中的元素可以分散存储在内存空间里,而不是必须存储在一整块连续的内存空间中。
在这里插入图片描述
可以看到,list 容器中各个元素的前后顺序是靠指针来维系的,每个元素都配备了 2 个指针,分别指向它的前一个元素和后一个元素。其中第一个元素的前向指针总为 null,因为它前面没有元素;同样,尾部元素的后向指针也总为 null。
基于这样的存储结构,list 容器具有一些其它容器(array、vector 和 deque)所不具备的优势,即它可以在序列已知的任何位置快速插入或删除元素(时间复杂度为O(1))。并且在 list 容器中移动元素,也比其它容器的效率高。
使用 list 容器的缺点是,它不能像 array 和 vector 那样,通过位置直接访问元素。举个例子,如果要访问 list 容器中的第 6 个元素,它不支持容器对象名[6]这种语法格式,正确的做法是从容器中第一个元素或最后一个元素开始遍历容器,直到找到该位置。
实际场景中,如何需要对序列进行大量添加或删除元素的操作,而直接访问元素的需求却很少,这种情况建议使用 list 容器存储序列。

二、list的使用

1.构造函数

在这里插入图片描述
在这里插入图片描述

2.正向迭代器

在这里插入图片描述

3.反向迭代器

在这里插入图片描述

4.范围for

在这里插入图片描述

5.获取首尾元素

在这里插入图片描述
在这里插入图片描述

6.插入元素的相关操作

在这里插入图片描述
插入不会导致迭代器失效

7.删除导致迭代器失效

在这里插入图片描述

8.resize

在这里插入图片描述

9.链表的拼接

在这里插入图片描述

10.remove删除元素

在这里插入图片描述

11.元素去重

在这里插入图片描述

12.链表合并

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李憨憨_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值