news 2026/5/3 14:55:33

C++ list容器完全指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C++ list容器完全指南

一、list 是什么

list双向循环链表

  • 底层不是连续内存,每个节点独立分配
  • 每个节点存:数据 + 前驱指针 + 后继指针
  • 不支持下标随机访问[]
  • 任意位置插入、删除效率极高,不会移动大量元素

头文件:

#include <list> using namespace std;

二、list 常用初始化

// 1. 空链表 list<int> l1; // 2. 5个元素,默认0 list<int> l2(5); // 3. 5个元素,全初始化为6 list<int> l3(5, 6); // 4. 列表初始化 list<int> l4 = {10,20,30,40};

三、list 核心增删接口

1. 头尾插入删除

list<int> l; l.push_back(10); // 尾插 l.push_front(20); // 头插 l.pop_back(); // 尾删 l.pop_front(); // 头删

2. 任意位置插入 insert

// 在迭代器位置前插入元素 l.insert(l.begin(), 88);

3. 删除 erase

// 删除迭代器指向元素 l.erase(l.begin()); // 清空所有 l.clear();

4. 常用属性接口

l.size(); // 元素个数 l.empty(); // 是否为空 l.front(); // 头部元素 l.back(); // 尾部元素

四、list 遍历方式

重点:list 不支持下标[]访问只能用:迭代器、范围 for

1. 迭代器遍历

list<int> l = {1,2,3,4,5}; for(list<int>::iterator it = l.begin(); it != l.end(); ++it) { cout << *it << " "; }

2. 范围 for 遍历(最简)

for(int val : l) { cout << val << " "; }

五、list 独有常用操作

// 反转链表 l.reverse(); // 排序 l.sort(); // 去重(相邻重复才去重,建议先sort再unique) l.unique(); // 删除指定值的所有元素 l.remove(3);

六、完整实战示例代码

#include <iostream> #include <list> using namespace std; int main() { list<int> l; // 头尾插入 l.push_back(1); l.push_back(3); l.push_front(10); l.push_front(20); cout << "原始链表:"; for(int val : l) { cout << val << " "; } cout << endl; // 排序 + 反转 l.sort(); cout << "排序后:"; for(int val : l) cout << val << " "; cout << endl; l.reverse(); cout << "反转后:"; for(int val : l) cout << val << " "; return 0; }

七、vector /deque/list 终极对比(必背)

表格

容器底层随机访问 []头尾增删中间增删适用场景
vector连续数组支持尾快头慢纯尾部操作、频繁随机访问
deque分段块支持头尾都快频繁头尾插入删除
list双向链表不支持头尾极快极快频繁任意位置插入删除、不常查

选型口诀

  • 要随机访问、只在尾部操作 → vector
  • 要频繁头尾增删 → deque
  • 频繁中间插入删除、不在乎下标访问 → list

八、新手高频易错点

  1. 给 list 用下标l[0]编译报错
  2. 忘记 list 不支持随机访问,迭代器只能++--,不能it + 2
  3. unique 不去重,没先排序
  4. 混淆三者适用场景,乱用容器导致效率低
  5. list 迭代器增删后不会失效(和 vector 不一样)

九、今日重点总结

  1. list 底层是双向循环链表,非连续内存
  2. 不支持下标[],只能迭代器 / 范围 for 遍历
  3. 任意位置插入删除效率高,自带 sort、reverse、unique、remove
  4. 中间频繁增删优先选 list
  5. 掌握三大线性容器:vector、deque、list 选型完全够用
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/3 14:53:13

终极指南:AppleRa1n - 3步搞定iOS 15-16 iCloud激活锁绕过

终极指南&#xff1a;AppleRa1n - 3步搞定iOS 15-16 iCloud激活锁绕过 【免费下载链接】applera1n icloud bypass for ios 15-16 项目地址: https://gitcode.com/gh_mirrors/ap/applera1n AppleRa1n是一款专为iOS 15-16系统设计的iCloud激活锁绕过工具&#xff0c;通过全…

作者头像 李华
网站建设 2026/5/3 14:53:05

【仅限首批200位开发者】Python跨端性能调优私藏清单(含GIL绕过策略、异步IPC通信模板、GPU加速FFI桥接示例),错过再无完整版

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Python跨端性能调优全景认知 Python 跨端开发&#xff08;如使用 Kivy、BeeWare、PyQt 或新兴的 Tauri Python 后端组合&#xff09;面临的核心挑战并非语法差异&#xff0c;而是运行时环境碎片化带来…

作者头像 李华
网站建设 2026/5/3 14:39:41

告别模拟器:Windows原生运行安卓应用的终极方案

告别模拟器&#xff1a;Windows原生运行安卓应用的终极方案 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否厌倦了臃肿的安卓模拟器&#xff1f;是否想在Windows…

作者头像 李华
网站建设 2026/5/3 14:28:42

从A100到RTX 4090:一张图看懂不同架构显卡的AI算力该怎么比

从A100到RTX 4090&#xff1a;解码GPU架构演进与AI算力评估框架 在AI计算领域&#xff0c;显卡的选择往往决定了模型训练与推理的效率边界。当我们站在Ampere与Ada Lovelace两代架构的交汇点&#xff0c;会发现NVIDIA通过差异化的产品定位策略&#xff0c;在消费级与专业级市场…

作者头像 李华