std::list是C++ STL中的双向链表容器,1. 需包含头文件,支持多种初始化方式;2. 提供push_front、push_back、insert等高效插入操作及pop_front、erase等删除操作,front和back可访问首尾元素;3. 不支持下标访问,需用迭代器或范围for循环遍历;4. 支持sort、reverse、unique、merge和splice等特殊操作,适合有序合并与去重;5. 适用于频繁中间增删和复杂结构调整场景,但不适用于频繁随机访问或内存敏感场合。

在C++中,std::list 是标准模板库(STL)提供的一个双向链表容器。它支持高效的插入和删除操作,特别适合频繁修改数据结构的场景。与 vector 和 deque 不同,list 的元素在内存中不是连续存储的,而是通过指针连接节点,因此随机访问效率较低,但中间位置的增删操作非常高效。
1. 头文件与基本定义
使用 list 需要包含头文件:
#include定义方式如下:
-
std::list
lst; // 存储整数的空链表 -
std::list
dlst(5); // 包含5个默认值为0.0的元素 - std::list<:string> slst{"a", "b", "c"}; // 初始化列表
2. 常用成员函数操作
list 提供了丰富的成员函数来管理元素:
立即学习“C++免费学习笔记(深入)”;
插入操作:- lst.push_front(x):在链表头部插入元素 x
- lst.push_back(x):在链表尾部插入元素 x
- lst.insert(it, x):在迭代器 it 指向的位置前插入 x
- lst.pop_front():删除第一个元素
- lst.pop_back():删除最后一个元素
- lst.erase(it):删除迭代器 it 指向的元素
- lst.clear():清空所有元素
- lst.front():返回第一个元素的引用
- lst.back():返回最后一个元素的引用
- lst.empty():判断是否为空,返回 bool
- lst.size():返回当前元素个数
3. 迭代器遍历
由于 list 不支持下标访问,必须使用迭代器进行遍历:
std::list<int> lst = {1, 2, 3, 4, 5};
for (auto it = lst.begin(); it != lst.end(); ++it) {
std::cout << *it << " ";
}
登录后复制
也可以使用范围 for 循环(C++11 起):
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~