下面是 C++ STL list
(即 std::list
)的完整用法大全,涵盖常用成员函数、迭代器、操作与用法示例,并结合功能分类。
🧠 基础定义
🚀 成员函数分类总览
✅ 容器状态
函数名 |
说明 |
empty() |
判断是否为空 |
size() |
返回元素数量 |
max_size() |
返回容器可容纳的最大元素数量 |
clear() |
清空所有元素 |
resize(n) |
调整大小,若变大则用默认值补充 |
resize(n, val) |
同上,指定补充值 |
✅ 元素访问
函数名 |
说明 |
front() |
返回第一个元素的引用 |
back() |
返回最后一个元素的引用 |
✅ 迭代器
函数名 |
说明 |
begin() |
指向第一个元素的迭代器 |
end() |
指向最后一个元素之后的位置 |
rbegin() |
反向迭代器(从后向前)开始位置 |
rend() |
反向迭代器的终点 |
cbegin() |
const版本 |
cend() |
const版本 |
crbegin() |
const版本 |
crend() |
const版本 |
✅ 插入/删除操作
函数名 |
说明 |
push_front(val) |
插入元素到头部 |
push_back(val) |
插入元素到尾部 |
pop_front() |
删除头部元素 |
pop_back() |
删除尾部元素 |
insert(it, val) |
在迭代器 it 位置插入 val |
insert(it, n, val) |
在 it 处插入 n 个 val |
insert(it, first, last) |
插入一个区间([first, last)) |
erase(it) |
删除 it 处元素 |
erase(first, last) |
删除区间元素 |
remove(val) |
删除所有等于 val 的元素 |
remove_if(pred) |
删除满足谓词 pred 的元素 |
clear() |
清空所有元素 |
emplace(it, args...) |
原地构造插入元素 |
emplace_front(args...) |
原地构造插入到头部 |
emplace_back(args...) |
原地构造插入到尾部 |
✅ 排序与唯一化
函数名 |
说明 |
sort() |
默认从小到大排序 |
sort(comp) |
自定义排序 |
unique() |
去除连续重复元素 |
reverse() |
反转元素顺序 |
merge(list2) |
合并两个已排序的list |
merge(list2, comp) |
使用自定义比较合并 |
✅ 赋值与交换
函数名 |
说明 |
assign(n, val) |
赋值 n 个 val |
assign(first, last) |
赋值区间元素 |
operator= |
赋值运算符 |
swap(other) |
与另一个 list 交换数据 |
✅ splice 操作(转移元素)
函数名 |
说明 |
splice(pos, list2) |
把 list2 的所有元素移动到 pos 前 |
splice(pos, list2, it) |
把 list2 中的 it 元素移动到 pos 前 |
splice(pos, list2, first, last) |
把 list2 的 [first,last) 区间移动到 pos 前 |
🧪 示例
✅ list 特点总结
特性 |
是否支持 |
随机访问 |
❌ 不支持(不像 vector 能用 [] ) |
快速插入删除 |
✅ O(1) 时间在任意位置 |
迭代器稳定性 |
✅ 删除/插入不会使其他迭代器失效 |
元素连续性 |
❌ 元素不连续(不像数组或 vector) |
双向链表结构 |
✅ 是 |
如果你还想要:
- 可复制的全套模板代码
- 对每个函数的代码演示例子
- list 和 vector 的对比表
我也可以马上给你。是否继续?