std::list 是 C++ STL 中基于双向循环链表实现的序列容器。与 vector 不同,它支持在任意位置进行常数时间的插入和删除操作,但随机访问效率较低。下面梳理其核心接口,帮助大家在面试或实际工程中合理使用。
1. 构造与初始化
创建列表时,我们通常有几种选择:
// 默认构造空列表
list<int> l1;
// 构造 n 个值为 val 的元素
list<int> l2(5, 10);
// 用迭代器区间构造
vector<int> v = {1, 2, 3};
list<int> l3(v.begin(), v.end());
// 拷贝构造
list<int> l4(l1);
// 初始化列表构造
list<int> l5 = {1, 2, 3};
2. 赋值操作
除了使用 operator=,还可以用 assign 方法重置内容,这在需要清空并重新填充时比较方便。
// 拷贝赋值
l1 = l2;
// assign 用法
l1.assign(3, 10); // 变为 10, 10, 10
l1.assign({1, 2});
3. 迭代器与访问
list 不支持下标访问,必须通过迭代器遍历。注意区分正向和反向迭代器。
auto it = l.begin(); // 指向第一个元素
auto end_it = l.end();
rit = l.();


