C++ STL list 原创 huangjinqiang
2025-12-26
std::list 是 C++ STL 提供的双向链表容器,底层由分散的节点通过指针连接而成,每个节点包含前驱和后继指针。它支持在任意位置(通过迭代器)进行 O(1) 时间复杂度的插入与删除,且操作不会使其他迭代器失效,非常适合频繁修改中间元素的场景(如实现 LRU 缓存)。然而,list 不支持随机访问(无法使用下标),遍历时缓存命中率低,且每个节点额外占用两个指针的内存开销。尽管功能强大,但在实际开发中,除非明确需要稳定迭代器或高频中间插入,否则通常优先选用性能更优的 vector。使用 list 无需手动管理内存,安全且高效。
一句话定义
std::list 是 C++ STL 提供的双向链表(doubly linked list)容器,功能上类似:
Java 的 LinkedList
Python 中没有直接等价物(但你可以用 collections.deque 模拟部分行为)
但它不是数组,而是由节点通过指针连接而成,支持高效的任意位置插入/删除。
为什么用 std::list?(vs 手写链表 or vector)
优势
说明
不用手动管理内存
不用手写 new/delete,STL 自动处理节点分配和释放
双向遍历
每个……