C++笔记——第六篇 list的简介和使用
创始人
2025-05-31 23:46:09
0

目录

一、list的介绍和使用

1. list的介绍

2. list的使用 

2.1 list的构造

 2.2 list iterator的使用

2.3 list capacity

2.4 list element access

2.5 list modifiers

2.6 list的迭代器失效

二、list与vector的对比




一、list的介绍和使用



1. list的介绍


1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代


2. list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。


3. list与forward_list非常相似:最主要的不同在于forward_list是单链表,只能朝前迭代,已让其更简单高效。


4. 与其他的序列式容器相比(array,vector,deque),list通常在任意位置进行插入、移除元素的执行效率更好。


5. 与其他序列式容器相比,list和forward_list最大的缺陷是不支持任意位置的随机访问,比如:要访问list的第6个元素,必须从已知的位置(比如头部或者尾部)迭代到该位置,在这段位置上迭代需要线性的时间开销;list还需要一些额外的空间,以保存每个节点的相关联信息(对于存储类型较小元素的大list来说这可能是一个重要的因素)


2. list的使用 


2.1 list的构造

构造函数( (constructor)) 接口说明
list() ——构造空的list


list (size_type n, const value_type& val = value_type()) —— 构造的list中包含n个值为val的元素


list (const list& x)  —— 拷贝构造函数


list (InputIterator first, InputIterator last) —— 用[first, last)区间中的元素构造list

 2.2 list iterator的使用

函数声明 ——接口说明
begin +end——返回第一个元素的迭代器+返回最后一个元素下一个位置的迭代器


rbegin +rend——返回第一个元素的reverse_iterator,即end位置,返回最后一个元素下一个位置的reverse_iterator,即begin位置

 1. begin与end为正向迭代器,对迭代器执行++操作,迭代器向后移动
 2. rbegin(end)与rend(begin)为反向迭代器,对迭代器执行++操作,迭代器向前移动

2.3 list capacity

函数声明—— 接口说明
empty ——检测list是否为空,是返回true,否则返回false
size ——返回list中有效节点的个数 

2.4 list element access

函数声明 —— 接口说明
front —— 返回list的第一个节点中值的引用
back —— 返回list的最后一个节点中值的引用

2.5 list modifiers

函数声明 —— 接口说明
push_front —— 在list首元素前插入值为val的元素
pop_front —— 删除list中第一个元素
push_back —— 在list尾部插入值为val的元素
pop_back —— 删除list中最后一个元素
insert —— 在list position 位置中插入值为val的元素
erase —— 删除list position位置的元素
swap —— 交换两个list中的元素
clear —— 清空list中的有效元素

2.6 list的迭代器失效

大家可将迭代器暂时理解成类似于指针,迭代器失效即迭代器所指向的节点的无效,即该节点被删除了。因为list的底层结构为带头结点的双向循环链表,因此在list中进行插入时是不会导致list的迭代器失效的,只有在删除时才会失效,并且失效的只是指向被删除节点的迭代器,其他迭代器不会受到影响。

 

 



二、list与vector的对比



vector的底层是动态顺序表,也就是一段连续的内存空间,所以能够支持随机访问,因此适合用来进行排序。但是其插入数据会造成扩容,并且删除元素会造成元素的移动,所以不适合频繁插入、删除的场景。

list的内存空间是可以不连续的双向链表,由于空间不连续所以不支持随机访问,但是其插入和删除操作效率很高,适合频繁插入、删除的场景。

vector在扩容和删除元素时会造成迭代器失效的问题,而list在删除时会造成迭代器失效的问题。



 

 (图片来源于网络)

相关内容

热门资讯

妻室的解释及造句 妻室的解释及造句  妻室拼音  【注音】: qi shi  妻室解释  【意思】:<书>妻子。  妻...
复兴的解释及造句 复兴的解释及造句  复兴拼音  【注音】: fu xing  复兴解释  【意思】:(1)衰落后再兴...
“谈笑风生”造句 1、他们谈笑风生地走进了校长办公室。2、人少言寡语不一定大智大勇,谈笑风生不一定是不严肃。3、我们走...
闷气的拼音解释及造句 闷气的拼音解释及造句  闷气拼音  【注音】: men qi  闷气解释  【意思】:2(mēqì)...
听差的拼音解释及造句 听差的拼音解释及造句  听差拼音  【注音】: ting cha  听差解释  【意思】:旧时指在机...
帘子的拼音解释及造句 帘子的拼音解释及造句  帘子拼音  【注音】: lian zi  帘子解释  【意思】:<口>帘②:...
慢慢地如何造句 慢慢地如何造句(精选70句)  造句是指用词语组织句子,下面是小编整理的慢慢地如何造句(精选70句)...
司空见惯的意思是什么-词语用... 其实人生便像是是平日司空见惯的太阳,它日复一日地遵循着东升西落的轨道。那么,司空见惯的具体意思是什么...
用不容置疑怎么造句 用不容置疑怎么造句用不容置疑怎么造句1  一、一切不容置疑,男人的霸气通过一种温暖的手段淋淳尽臻地表...
鼻音的解释及造句 鼻音的解释及造句  鼻音拼音  【注音】: bi yin  鼻音解释  【意思】:口腔气流通路阻塞,...
以此为鉴的意思并造句 以此为鉴的意思并造句  以此为鉴是一个常见的汉语词汇,是什么意思呢?要怎么造句?以下是小编整理的以此...
生财之道的造句 生财之道的造句(精选50句)  造句指懂得并使用字词,按照一定的句法规则造出字词通顺、意思完整、符合...
热症的解释及造句 热症的解释及造句  热症拼音  【注音】: re zheng  热症解释  【意思】:中医指发热、口...
博览群书造句   博览群书:广泛地阅读各种书。形容读书很多。下面是小编为你带来的博览群书造句,欢迎阅读。  博览群...
“拿下马来”造句 1、 说罢,先将庞昱拿下马来,差役掏出锁来锁上。2、 我会让Mas将这个消息封锁,等公司拿下马来西亚...
美轮美奂的意思和造句 美轮美奂的意思和造句  美轮美奂就是形容建筑物的高大、漂亮,我们看看下面的美轮美奂的意思和造句。  ...
惊心动魄造句 惊心动魄造句3篇惊心动魄造句1  1、今日看新闻才知道这几天发生了许多让我惊心动魄的车祸,不由自主的...
殿试的解释及造句 殿试的解释及造句  殿试拼音  【注音】: dian shi  殿试解释  【意思】:科举制度中最高...
猛进的解释及造句 猛进的解释及造句  猛进拼音  【注音】: meng jin  猛进解释  【意思】:不怕困难,勇敢...
运动会口号 运动会口号大全  无论是在学校还是在社会中,大家都有令自己印象深刻的口号吧,简短的句式、朴素的遣词造...