

新闻资讯
技术学院std::list是双向链表,插入删除O(1),不支持随机访问,迭代器稳定,适用于频繁中间修改场景。
在C++ STL中,std::list 是一个双向链表容器,支持高效地在任意位置插入和删除元素。与 vector 不同,list 不提供随机访问,但它的插入和删除操作不会导致其他元素的内存移动,因此在频繁修改数据结构时表现更优。
std::list 具有以下关键特点:
以下是 list 常见操作的使用方式:
// 包含头文件
#include
#include iostream>
int main() {
std::list
// 在末尾添加元素
lst.push_back(4);
// 在开头添加元素
lst.push_front(0);
// 插入到指定位置(例如在值为3的元素前插入99)
auto it = std::find(lst.begin(), lst.end(), 3);
if (it != lst.end()) {
lst.insert(it, 99);
}
// 删除特定值(所有等于99的元素)
lst.remove(99);
// 删除某个位置的元素
it = std::find(lst.begin(), lst.end(), 2);
if (it != lst.end()) {
lst.erase(it);
}
// 遍历输出
for (const auto& val : lst) {
std::cout }
std::cout
return 0;
}
由于 list 不
支持随机访问,必须使用双向迭代器进行遍历:
// 反向遍历示例
for (auto rit = lst.rbegin(); rit != lst.rend(); ++rit) {
std::cout }
list 最适合需要频繁在中间插入或删除元素的场景。比如实现待办事项列表、文本编辑器中的行管理等。
基本上就这些。std::list 提供了灵活的动态结构,理解其底层机制有助于合理选择容器类型。不复杂但容易忽略的是迭代器稳定性这一点,在实际编程中非常有用。