C++ STL list 容器详解
list 是 C++ STL 中基于双向循环链表实现的序列容器。与 vector 不同,它在任意位置插入和删除元素的时间复杂度均为 O(1),但不支持随机访问(无法通过下标直接获取元素)。
一、list 的使用
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) 中的元素构造 list |
2. 迭代器机制
迭代器在 list 中本质上是指向节点的指针。理解正向与反向迭代器的行为至关重要。
begin()/end():分别指向第一个元素和最后一个元素之后的位置(头节点)。rbegin()/rend():反向迭代器,++操作符会向前移动。
注意:正向迭代器 ++ 向后移动,反向迭代器 ++ 向前移动。STL 遵循左闭右开原则,end() 始终指向无效位置。

3. 常用接口概览
除了基础构造,list 的核心功能集中在容量管理、元素访问和操作修改上。
| 函数声明 | 接口说明 |
|---|---|
empty() | 检测 list 是否为空 |
size() | 返回有效节点个数 |
front() | 返回第一个节点值的引用 |
back() | 返回最后一个节点值的引用 |
push_front / |


