这一篇进入 C++ 泛型编程和 STL。

前面的面向对象解决“如何把数据和行为组织成对象”,泛型编程则解决“如何把一套逻辑适配多种类型”。模板、容器、迭代器和异常处理在 C++ 项目里非常常见;对安全开发来说,重点不是只会调用接口,而是理解模板展开、容器内存布局、迭代器失效、边界检查和异常传播。

1、学习定位

泛型编程复盘时要同时看三层:

层次 重点
语法层 函数模板、类模板、模板特化、默认模板参数、STL 容器接口
编译层 模板实例化、类型推导、重载匹配、分文件编写问题
内存层 string/vector/deque/list/set/map 的存储方式、迭代器和对象生命周期

后面看 C++ 程序、逆向 STL 容器、定位越界或迭代器失效问题时,这一篇会很值得回看。

2、章节目录

编号 章节 主要内容 笔记
0123 01 模板基础 泛型编程概念、函数模板、模板底层原理、函数模板特化、默认模板参数、多个模板参数、模板调用规则、类模板定义与实例化 0123
0124 02 类模板与 string 类模板成员函数、继承规则、对象参数传递、友元函数、分文件编写、STL 概念、string 初始化/比较/读取/访问/查找/插入删除 0124
0125 03 vector、deque 与 list vector 特性、内存布局、大小函数、追加插入删除、deque 内存布局、list 构造/插入/删除/查找修改 0125
0126 04 set、pair 与 map set 存储规则、大小替换、重复元素、查找计数、pair、map 构造、数据访问和增删改查 0126
0127 05 异常处理 C 预定义宏、错误规避、标准错误、C++ 抛出异常、异常传播、异常规范、标准异常和自定义异常 0127

3、整理原则

这一篇后续按“模板/容器接口 → 可运行代码 → 底层或内存理解 → 安全边界”整理。STL 用起来很方便,但复盘时仍然要关心容量变化、迭代器失效、拷贝移动、异常安全和边界访问。

4、复盘重点

方向 复盘重点
模板 模板不是运行时动态泛型,而是编译期根据类型生成代码
string 字符串容量、查找替换、输入读取和编码边界
vector 连续内存、扩容、迭代器失效和越界访问
deque 分段连续结构,头尾插入和内存组织方式
list 节点式结构,插入删除稳定但随机访问弱
set/map 红黑树类关联容器,键唯一性、排序规则和查找复杂度
异常 抛出、传播、捕获、资源释放和异常安全