C++ STL list 容器详解:使用与模拟实现

1. list 的介绍及使用
1.1 list 的基本概念
在 C++ STL 中,list 是一个基于双向循环链表的容器。与 vector 不同,它在任意位置插入和删除元素的时间复杂度都是 O(1),但不支持随机访问(即不能通过下标直接访问元素)。这意味着如果你需要频繁地在中间操作数据,list 是更好的选择;但如果你需要按索引快速查找,vector 更合适。
1.2 常用接口概览
list 提供了丰富的接口,下面介绍其中一些核心且常用的部分。
1.2.1 构造方式
| 构造函数 | 说明 |
|---|---|
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 |
1.2.2 迭代器使用
迭代器本质上是对底层节点指针的封装,用于遍历容器。
begin():返回指向第一个元素的迭代器end():返回指向最后一个元素下一个位置的迭代器rbegin():返回指向最后一个元素的反向迭代器rend():返回指向第一个元素前一个位置的反向迭代器
注意:begin 和 end 是正向迭代器,++ 向后移动;rbegin 和 rend 是反向迭代器,++ 向前移动。

1.2.3 容量操作
| 函数声明 | 接口说明 |
|---|---|
empty() | 检测 list 是否为空 |
size() | 返回 list 中有效节点的个数 |


