1. list 的介绍及使用
1.1 list 的介绍
list 是 C++ STL 中一个非常实用的容器,底层基于带头结点的双向循环链表。和 vector 不同,它在任意位置插入和删除元素的时间复杂度都是 O(1),但代价是不支持随机访问(无法通过下标直接取值)。
1.2 list 的使用
list 提供了丰富的接口,这里挑几个核心且常用的讲讲。
1.2.1 list 的构造
| 构造函数 | 说明 |
|---|---|
list(size_type n, const value_type& val) | 构造包含 n 个值为 val 的元素的 list |
list() | 构造空 list |
list(const list& x) | 拷贝构造 |
list(InputIterator first, InputIterator last) | 用区间 [first, last) 中的元素构造 |
1.2.2 list 迭代器的使用
迭代器本质上是指向节点的指针封装。
begin():指向第一个元素end():指向最后一个元素的下一个位置(头节点)rbegin()/rend():反向迭代器
注意:正向迭代器 ++ 向后移动,反向迭代器 ++ 向前移动。理解这个方向性对调试很重要。
1.2.3 list capacity
| 函数声明 | 接口说明 |
|---|---|
empty() | 检测是否为空 |
size() | 返回有效节点个数 |
1.2.4 list element access
| 函数声明 | 接口说明 |
|---|---|
front() | 返回第一个节点值的引用 |
back() | 返回最后一个节点值的引用 |
1.2.5 list modifiers
| 函数声明 | 接口说明 |
|---|---|
push_front / pop_front | 首端插入/删除 |
push_back / pop_back | 尾部插入/删除 |
insert / erase |


