Appearance
附录 D · 学习路径与备考规划
面向已掌握 C++ 基础语法、准备系统学习 STL 的读者,给出知识地图、三阶段路径、10 天速通计划、自测清单与各级衔接建议。
一、知识地图
第1章 STL 总览 ── 三大组件、容器分类、选型思维
│
├─ 序列式 ── 第2章 vector(连续内存)→ 第3章 list(链表)→ 第4章 deque(分段连续)
│
├─ 关联式 ── 第5章 set 系列(去重/有序)→ 第6章 map 系列(映射/统计)
│
├─ 适配器 ── 第7章 stack(LIFO)→ 第8章 queue(FIFO/BFS)→ 第9章 priority_queue(堆/TopK)
│
└─ 基础工具 ── 第10章 pair(键值组合,map 的元素单位)二、章序与学序
- 章序(本书编排):按容器分类,便于同类对比、横向查阅。
- 学序(推荐学习):按难度由浅入深,pair → vector → stack → queue → list → deque → set → map → priority_queue。
两者不一致是刻意设计:第10章的 pair 概念最简单,却因属于"基础工具"而排在末章。首次学习请按学序跳读,复习查阅时再按章序。
三、三阶段学习路径
第一阶段:会用(3~4 天)
目标:能独立写出各容器的增删改查,做对选择题。
| 天 | 内容 | 自测标准 |
|---|---|---|
| 1 | 第10章 pair + 第2章 vector | 能默写 pair 的三种初始化、vector 的 5 个常用函数 |
| 2 | 第7章 stack + 第8章 queue | 能手写括号匹配、能手写 BFS 框架 |
| 3 | 第3章 list + 第4章 deque | 能说清三者(vector/list/deque)的区别与复杂度 |
| 4 | 阶段自测:第1章实战练习 + 附录 B 一、二节 | 五星考点能默写 80% |
第二阶段:会选(3~4 天)
目标:拿到问题能选对容器,能做编程题。
| 天 | 内容 | 自测标准 |
|---|---|---|
| 5 | 第5章 set 系列 | 能说清四种 set 的差异与选型 |
| 6 | 第6章 map 系列 | 能独立写出 mp[x]++ 计数并按 key 输出 |
| 7 | 第9章 priority_queue | 能写大顶堆与小顶堆,能解 TopK |
| 8 | 阶段自测:各章编程题 + 附录 B 第五节易错点 TOP 20 | 易错点能主动规避 |
第三阶段:会优化(2~3 天)
目标:理解底层,能做复杂度分析与优化。
| 天 | 内容 | 自测标准 |
|---|---|---|
| 9 | 各章"底层原理"小节 + 附录 B 第二节复杂度表 | 能默画复杂度速查表 |
| 10 | 综合练习:多容器配合(如 map + priority_queue、set + vector) | 能独立完成附录 D 第六节自测清单 |
四、10 天速通计划(每天 1.5~2 小时)
| 天 | 上午 / 主学(60 min) | 下午 / 练习(40 min) | 睡前回顾(10 min) |
|---|---|---|---|
| 1 | 第1章 + 第10章 pair | 第10章练习 | pair 的字典序规则 |
| 2 | 第2章 vector | 第2章练习 | 扩容机制与迭代器失效 |
| 3 | 第7章 stack | 第7章练习(括号匹配必做) | pop 不返回值 |
| 4 | 第8章 queue | 第8章练习(BFS 必做) | 队列清空的方式 |
| 5 | 第3章 list + 第4章 deque | 第3、4章练习 | 三者的复杂度对比表 |
| 6 | 第5章 set 系列 | 第5章练习 | 四种 set 的选型 |
| 7 | 第6章 map 系列 | 第6章练习(统计类必做) | [] 会自动插入 |
| 8 | 第9章 priority_queue | 第9章练习(TopK 必做) | 大顶堆 vs 小顶堆写法 |
| 9 | 附录 B 全部 + 各章速记卡 | 第1章实战练习 | 复杂度速查表 |
| 10 | 错题重做 | 附录 D 第六节自测清单 | 必背速记卡 |
五、考场时间分配建议(含 STL 的编程题)
| 环节 | 建议时间 | 要点 |
|---|---|---|
| 审题与选型 | 3~5 分钟 | 先确定容器,再写算法;选型错了会全盘皆输 |
| 写代码 | 15~20 分钟 | 容器声明、头文件一次性写全 |
| 自测样例 | 3~5 分钟 | 必测空输入、单元素、最大值三种边界 |
| 检查复杂度 | 2 分钟 | 对照附录 B 第二节,确认不会超时 |
六、自测清单(能全部答出即可认为掌握)
概念层:
- 说出 STL 的三大组件及其作用。
- 说出序列式、关联式、容器适配器各包含哪些容器。
- 说出哪些容器支持随机访问、哪些支持迭代器、适配器为什么不支持遍历。
选型层:
- 频繁中间插入删除 → 选哪个容器?
- 需要按 key 计数且按 key 有序输出 → 选哪个容器?
- 需要每次取最小值 → 怎么写优先队列?
- 需要去重且不要求有序、数据量很大 → 选哪个容器?
复杂度层:
- 说出 vector、list、deque、set、unordered_map 的查找复杂度。
- 说出 priority_queue 的 push/pop 复杂度。
- 说出 vector 尾插的均摊复杂度及扩容代价。
排错层:
pop()为什么拿不到值?正确写法是什么?map[key]访问不存在的 key 会发生什么?如何避免?unique()之后还缺哪一步?- 遍历时删除元素,迭代器该怎么写?
- 空容器调用
top()会怎样?如何避免?
七、与 GESP 各级备考的衔接
| 当前级别 | STL 学习重点 | 配合册 |
|---|---|---|
| 备考四级 | 只需 vector + pair + sort | level4(排序算法) |
| 备考五级 | 加 stack、queue、了解 list | level5(链表、递归、分治) |
| 备考六级 | 加 priority_queue、deque | level6(树、搜索、栈与队列) |
| 备考七级 | 加 set、map、unordered_* | level7(哈希表、图遍历、复杂 DP) |
| 备考八级 | 九种容器全通,重在复杂度与优化 | level8(图论、效率分析、算法优化) |
向下衔接:若尚未掌握 C++ 基础语法(变量、循环、数组、函数、结构体),请先学 level1~level3,再回到本册。 向上延伸:本册只覆盖容器。STL 的算法(
sort进阶、next_permutation、nth_element等)与字符串流(stringstream)在各级别册中结合具体算法讲解。
本规划为建议值,请按自己的实际进度调整;关键是每天都敲代码。
