在C++中,std::list
是一个双向链表,它允许在列表的任何位置高效地插入和删除元素。以下是一些基本的使用方式:
包含头文件
要使用 std::list
,首先需要包含头文件 <iostream>
和 /list>
。
#include <iostream>
#include <list>
创建 list
// 创建一个空的 list
std::list<int> lst;// 使用初始化列表创建 list
std::list<int> lst = {1, 2, 3, 4, 5};
添加元素
// 在 list 末尾添加一个元素
lst.push_back(6);// 在 list 开头添加一个元素
lst.push_front(0);// 在特定位置添加一个元素
auto it = std::next(lst.begin(), 2); // 定位到第三个元素的位置
lst.insert(it, 7);
删除元素
// 删除特定位置的元素
it = std::next(lst.begin(), 2); // 定位到第三个元素的位置
lst.erase(it);// 删除特定值的所有元素
lst.remove(7);// 删除从 pos 到 pos + n 的元素
auto end = std::next(it, 3); // 从第三个元素开始,删除三个元素
lst.erase(it, end);
访问元素
std::list
不支持随机访问,因此不能使用下标访问元素。但可以使用迭代器访问元素。
// 使用迭代器访问元素
for (auto it = lst.begin(); it != lst.end(); ++it) {std::cout << *it << " ";
}
修改元素
// 使用迭代器修改元素
for (auto it = lst.begin(); it != lst.end(); ++it) {if (*it == 2) {*it = 20; // 修改值为 20break;}
}
遍历 list
// 使用范围基 for 循环
for (int value : lst) {std::cout << value << " ";
}// 使用传统 for 循环
for (auto it = lst.begin(); it != lst.end(); ++it) {std::cout << *it << " ";
}
获取 list 信息
// 获取 list 的大小
size_t size = lst.size();// 检查 list 是否为空
bool empty = lst.empty();
清空 list
lst.clear();
交换两个 list 的内容
std::list<int> lst2 = {7, 8, 9};
lst.swap(lst2);
合并两个 list
std::list<int> lst2 = {7, 8, 9};
lst.merge(lst2); // 合并两个有序 list,假设它们已经排序
排序 list
lst.sort(); // 排序 list,使用 operator< 进行比较
反转 list
lst.reverse();
std::list
提供了许多其他功能和操作,这些只是最基本的一些。正确使用 std::list
可以极大地提高程序的灵活性和效率,尤其是在需要频繁插入和删除操作的场景中。