前言:
list的底层结构是一个带头双向循环链表,string和vector平时我们用到的比较多,相对于string容器和vector容器,我们对于list 相对来说稍微陌生一些,通过文章的介绍和和以后使用到此容器后有遗忘的点,通过官方文档的查阅,加强对于list容器的认识。
内容摘要:
本文包含四种构造函数、赋值重载、空和大小有关的操作、获取元素的操作、正反向迭代器、插入和删除有关的操作、一些常用的函数例如swap、 clear、remove、splice、unique、merge、sort、reverse等等。
构造函数
默认构造
构造出一个没有元素的空容器
填充构造
构造出一个元素个数为n的容器,容器中每个元素都是val
范围构造
构造出一个包含从frist到last元素的容器
拷贝构造
通过将容器x进行拷贝复制,新容器中的元素和x中的元素一模一样
赋值重载
将已经构造出来的对象通过 x 进行赋值,使实例化出来的容器对象中的元素和容器x中元素相同,这里多说一嘴,赋值重载和拷贝构造函数意义还是比较像的都是将容器的值赋给一个容器对象,区别是,拷贝构造是在实例化出来容器对象时进行赋值,而赋值重载是已经实例化出来的对象通过其他容器对象进行赋值,他们赋值的时期是不同的
空和大小
list的容量和大小这个模块相对都string容器和vector容器来说接口少了好多,因为list容器在内存空间不是连续的,因此没有扩容操作,也没有容量有关的操作
计算链表的有效节点数(size)
计算的是有效节点数,并不包括头节点
判断链表是否为空(empty)
链表为空返回ture,否则返回false
控制节点大小(resize)
当n值大于size()时,通过元素val进行填充;当n<size()相当于删除数据。
获取元素
这里获取元素只有获取头元素和获取尾元素两个接口,这和链表的结构有关,原因是这两个函数的效率在链表元素的获取中是最高的,因为头结点的下一个节点的数据域就是头元素,头结点的的上一个节点的数据域就是尾元素
获取头部元素(front)
获取尾部元素(back)
迭代器
正向迭代器
反向迭代器
插入和删除
尾插(push_back)
尾删(pop_back)
头插(push_front)
头删(pop_front)
任意位置插入(insert)
任意位置删除(erase)
一些其他函数
clear
swap
remove
删除容器中所有等于val 的节点,将调用这些被删除的节点对象的析构函数,进行删除
splice
将元素从一个容器插入另一个容器中的指定位置,这里的插入和insert 是不同的,这里主动插入的容器会删除插入的节点,两个容器的大小都发生了改变。
unique
删除容器中含有多个相同元素的值,只保留相同元素的第一个,使得容器中的每个元素都唯一,这将对排序列表有一定的作用
merge
将两个已经排序好的链表通过归并排序,合并成一个有序的链表
sort
将链表中的元素进行有序排序
reverse
将链表进行反转
标签:容器,元素,list,C++,链表,节点,赋值 From: https://blog.csdn.net/2302_80475369/article/details/142637469