C++ STL list 容器详解:使用与模拟实现
list 是 C++ STL 中一个非常重要的容器,底层基于带头结点的双向循环链表。和 vector 不同,list 在任意位置插入和删除元素的时间复杂度都是 O(1),但它不支持随机访问(即不能通过下标直接访问元素)。
list 的使用
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 |
迭代器操作
迭代器可以暂时理解为指向 list 中某个节点的指针。
begin():返回指向第一个元素的迭代器end():返回指向最后一个元素下一个位置的迭代器rbegin():返回指向最后一个元素的反向迭代器rend():返回指向第一个元素前一个位置的反向迭代器
注意:begin 和 end 是正向迭代器,++ 向后移动;rbegin 和 rend 是反向迭代器,++ 向前移动。

容量与访问
| 函数声明 | 接口说明 |
|---|---|
empty() | 检测 list 是否为空 |
size() | 返回 list 中有效节点的个数 |
front() | 返回第一个节点中值的引用 |
back() | 返回最后一个节点中值的引用 |
修改操作
| 函数声明 | 接口说明 |
|---|---|
push_front / pop_front | 在 list 首元素前插入或删除 |
| / |


