一、std::list 与 std::forward_list 概述
std::list 和 std::forward_list 都是 C++ STL 中的链表容器,用于存储动态大小的元素集合。
两者的核心区别在于链表结构和遍历方式:
| 特性 | std::list | std::forward_list |
|---|---|---|
| 链表类型 | 双向链表 | 单向链表 |
| 插入/删除效率 | 任意位置 O(1) | 任意位置 O(1) |
| 随机访问 | 不支持 | 不支持 |
| 内存占用 | 较高(每个节点包含前后指针) | 较低(仅有后继指针) |
| 适用场景 | 需要频繁中间插入/删除 | 内存敏感且仅需单向遍历 |
二、std::list 详解
1. 核心特性
- 双向链表结构:每个节点包含
prev和next指针,支持从前到后或从后到前的遍历。 - 高效插入与删除:在任意位置插入或删除元素的时间复杂度为 O(1)。
- 不支持随机访问:不能使用下标
[]或at()访问元素。 - 迭代器稳定性:插入或删除元素不会导致其他迭代器失效(除非删除的正是该迭代器所指向的元素)。
2. 常用函数示例
#include <list>
#include <iostream>
int main() {
// 1. 初始化
std::list<int> l1; // 空 list
std::list<int> l2(5, 100); // 5 个 100: {100, 100, 100, 100, 100}
std::list<int> l3 = {1, 2, 3}; // 列表初始化
l();
l();
l();
l();
l(++l(), );
l(l());
( & val : l1) {
std::cout << val << ;
}
l();
l();
l(l2);
l();
;
}


