泛型编程与标准模板库(STL)
基础工具
模板初阶
-
泛型编程 (Generic Programming)
- 背景问题
- 场景:如何实现一个通用的交换函数 Swap?
- 传统做法:函数重载 (Function Overloading)。
void Swap(int& left, int& right) { ... } void Swap(double& left, double& right) { ... } void Swap(char& left, char& right) { ... } - 函数重载的缺点:
- 代码复用率低:仅类型不同,逻辑完全重复。
- 可维护性差:一个逻辑错误需要修改所有重载版本。
- 扩展性差:每增加新类型,都需要手动增加新函数。
- 概念
- 定义:编写与类型无关的通用代码,是代码复用的一种手段。
- 核心:模板 (Template) 是泛型编程的基础。
- 比喻:活字印刷术(模具),根据填充不同材料(类型)生成产品(具体代码)。
- 背景问题
-
函数模板 (Function Template)
- 概念与语法
- 定义:代表一个函数家族,与类型无关。在使用时被参数化,根据实参类型产生函数的特定类型版本。
- 语法:
template<typename T1, typename T2, ..., typename Tn> 返回值类型 函数名 (参数列表) { ... } - 关键字说明:
template:声明模板。typename:定义模板参数关键字。class:也可以使用class代替typename。- 注意:不能使用
struct代替class。
- 示例:
template <typename T> { T temp = left; left = right; right = temp; }
- 概念与语法

