std::list 是 C++ 标准库提供的双向链表容器,定义在 <list> 头文件中。每个节点通过指针链接前后元素,内存不连续,这决定了它的优势:在任意已知位置插入或删除节点是 O(1) 的,但随机访问只能遍历,复杂度 O(n)。
链表的底层实现通常带一个哨兵节点(头节点),不存有效数据,只用于逻辑占位。头插操作实际发生在哨兵之后,头删则是移除哨兵之后的第一个节点。这些细节自己实现时会踩坑,用标准容器就省事多了。
详细接口文档可以参考 cplusplus.com list 参考。
构造与容量
list 的初始化方式很灵活,常见用法:
void test_construct() {
list<int> lt1; // 空链表
list<int> lt2(5, 1); // 5 个 1
list<int> lt3(lt2); // 拷贝构造
list<int> lt4(lt2.begin(), lt2.end()); // 迭代器区间
list<int> lt5({ 1, 2, 3, 4, 5 }); // 初始化列表 (C++11)
}
容量相关就 size() 和 empty(),简单直观:
void test_capacity() {
list<int> lt({ , , , , });
cout << lt.() << endl;
(lt.())
cout << << endl;
cout << << endl;
}


