C++:list

目录

[一、list 的介绍](#一、list 的介绍)

[二、list 的使用](#二、list 的使用)

[2.1、list 的构造](#2.1、list 的构造)

2.1.1、list()

[2.1.2、list(size_type n, const value_type& val = value_type())](#2.1.2、list(size_type n, const value_type& val = value_type()))

[2.1.3、list(const list& x)](#2.1.3、list(const list& x))

[2.1.4、list(InputIterator first, InputIterator last)](#2.1.4、list(InputIterator first, InputIterator last))

[2.2、list 迭代器的使用](#2.2、list 迭代器的使用)

[2.2.1、begin() / end()](#2.2.1、begin() / end())

[2.2.1、rbegin() / rend()](#2.2.1、rbegin() / rend())

[2.3、list 的容器](#2.3、list 的容器)

2.3.1、empty()

2.3.2、size()

[2.4、list 的元素访问](#2.4、list 的元素访问)

2.4.1、front()

2.4.2、back()

[2.5、list 的增删查改](#2.5、list 的增删查改)

2.5.1、push_front

2.5.2、pop_front

[2.5.3、push_back / pop_back](#2.5.3、push_back / pop_back)

2.5.4、insert

2.5.5、erase

2.5.6、swap

2.5.7、clear

2.6、sort

三、结语


一、list 的介绍

list 可以理解为一个带头双向循环链表。

使用的时候需要包含头文件 <list>

在命名空间 std 内

二、list 的使用

2.1、list 的构造

2.1.1、list()

list 的无参构造,创建一个空的list

cpp 复制代码
list<int> li1;

2.1.2、list(size_type n, const value_type& val = value_type())

构造的 list 中含有 n 个值为 val 的元素

cpp 复制代码
list<int> li2(5, 8);

2.1.3、list(const list& x)

list 的拷贝构造

cpp 复制代码
list<int> li3(li2);

2.1.4、list(InputIterator first, InputIterator last)

list 的范围构造,即用区间 (first , last) 中的元素构造 list

cpp 复制代码
vector<int> v1(6, 8);
list<int> li4(v1.begin(), v1.end());

注意:该函数的迭代器不一定非要是 list 里面的哦!

2.2、list 迭代器的使用

2.2.1、begin() / end()

begin 返回第一个元素的迭代器;end 则返回最后一个元素的下一个空间

cpp 复制代码
list<int>::iterator begin = li1.begin();
list<int>::iterator end = li1.end();

2.2.1、rbegin() / rend()

跟 begin() / end() 刚好相反,如图:

2.3、list 的容器

2.3.1、empty()

判断 list 是否为空,是返回true,否返回false

cpp 复制代码
if (li1.empty())

2.3.2、size()

返回 list 中有效元素的个数

cpp 复制代码
cout << li1.size() << endl;

2.4、list 的元素访问

2.4.1、front()

返回 list 中第一个节点中值的引用

cpp 复制代码
cout << li1.front() << endl;

2.4.2、back()

返回 list 中最后一个节点中值的引用

cpp 复制代码
cout << li1.back() << endl;

2.5、list 的增删查改

2.5.1、push_front

在 list 首元素前插入值为 val 的元素,当然类型要相同或者相似

cpp 复制代码
li1.push_front(1314);

2.5.2、pop_front

删除 list 中的第一个元素

cpp 复制代码
li1.pop_front();

2.5.3、push_back / pop_back

这两个就是在链表末尾添加新元素或者删除最后一个元素

2.5.4、insert

insert 是插入的意思,可以在特定的位置完成插入一个元素,多个同样的元素,一个范围内的元素的操作。

cpp 复制代码
li1.insert(++li1.begin(), 520);    //在第二个位置插入一个 520
li1.insert(++li1.begin(), 5,520);   //在第二个位置插入五个 520
//在第二个位置插入一个范围
li1.insert(++li1.begin(),v1.begin(), v1.end());

2.5.5、erase

删除 list 中 posistion位置的元素,或者删除一个范围

cpp 复制代码
li1.erase(li1.begin());

2.5.6、swap

交换两个list中的元素

cpp 复制代码
list<int> li1{ 1,2,3,4,5,6 };
list<int> li2{ 520, 1314, 521 };
li1.swap(li2);

2.5.7、clear

清空 list 中的有效元素

cpp 复制代码
li1.clear();

2.6、sort

list 里面提供了自己的sort,对于 list 来说,该 sort 比库里的 sort 效率更高。使用sort后,list的元素会按升序排列。

cpp 复制代码
li2.sort();

三、结语

list 是标准模板库里的重要内容,通过之前 string、vector、的学习,list 的学习就显得非常简单了,包括后面的一些 STL 也是,但是,每个 STL 都有其独特的地方,还需要我们继续深入。

相关推荐
PPPPPaPeR.7 分钟前
光学算法实战:深度解析镜片厚度对前后表面折射/反射的影响(纯Python实现)
开发语言·python·数码相机·算法
橙露9 分钟前
Java并发编程进阶:线程池原理、参数配置与死锁避免实战
java·开发语言
froginwe1110 分钟前
C 标准库 - `<float.h>`
开发语言
历程里程碑16 分钟前
Linux 库
java·linux·运维·服务器·数据结构·c++·算法
Sheep Shaun18 分钟前
如何让一个进程诞生、工作、终止并等待回收?——探索Linux进程控制与Shell的诞生
linux·服务器·数据结构·c++·算法·shell·进程控制
2501_9160088920 分钟前
深入解析iOS机审4.3原理与混淆实战方法
android·java·开发语言·ios·小程序·uni-app·iphone
小龙报34 分钟前
【51单片机】从 0 到 1 玩转 51 蜂鸣器:分清有源无源,轻松驱动它奏响新年旋律
c语言·数据结构·c++·stm32·单片机·嵌入式硬件·51单片机
Dimpels41 分钟前
CANN ops-nn 算子解读:AIGC 批量生成中的 Batch 处理与并行算子
开发语言·aigc·batch
石去皿1 小时前
【嵌入式就业6】计算机组成原理与操作系统核心机制:夯实底层基础
c++·面试·嵌入式
王老师青少年编程1 小时前
2024年信奥赛C++提高组csp-s初赛真题及答案解析(完善程序第1题)
c++·题解·真题·初赛·信奥赛·csp-s·提高组