STL list链表的用法详细解析
什么是STL list?
STL list是STL(Standard Template Library)中的一个容器,是线性双向链表。该容器通过指针实现节点之间的连接。由于节点的删除和插入只需要操作前后节点的指针,因此在数据大量插入和删除的情况下,STL list比STL vector的效率更高。
list的基本使用
include头文件
#include <list>
定义list
std::list<int> mylist;
插入元素
mylist.push_back(1); // 在链表尾部插入元素1
mylist.push_front(2); // 在链表头部插入元素2
访问元素
STL list不支持随机访问,只支持双向迭代器。
std::list<int>::iterator it; // 声明一个迭代器
// 循环遍历链表中的元素
for (it = mylist.begin(); it != mylist.end(); it++) {
std::cout << *it << " ";
}
删除元素
mylist.pop_front(); // 删除链表头部元素
mylist.pop_back(); // 删除链表尾部元素
示例
示例1:链表排序
#include <iostream>
#include <list>
int main() {
std::list<int> mylist;
mylist.push_back(5);
mylist.push_back(2);
mylist.push_back(8);
mylist.push_back(1);
mylist.sort(); // 排序
std::list<int>::iterator it;
for (it = mylist.begin(); it != mylist.end(); it++) {
std::cout << *it << " ";
}
return 0;
}
输出:
1 2 5 8
示例2:链表合并
#include <iostream>
#include <list>
int main() {
std::list<int> list1;
list1.push_back(1);
list1.push_back(3);
list1.push_back(5);
std::list<int> list2;
list2.push_back(2);
list2.push_back(4);
list2.push_back(6);
list1.merge(list2); // 合并两个链表
std::list<int>::iterator it;
for (it = list1.begin(); it != list1.end(); it++) {
std::cout << *it << " ";
}
return 0;
}
输出:
1 2 3 4 5 6
总结
STL list是一个高效的链表容器,适用于数据量大且需要频繁插入和删除元素的场景。在使用时需要注意该容器不支持随机访问,只支持双向迭代器。在对链表进行排序和合并等操作时,可以使用STL提供的成员函数来实现。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:STL list链表的用法详细解析 - Python技术站