--- title: C++模板与STL tags: - module - cpp - template - stl - joplin type: module source_type: reconstructed created: 2026-04-22 updated: 2026-04-22 --- # C++模板与STL > [!abstract] > 这一模块处理 C++ 的泛型能力与标准库主线。重点不是背容器接口,而是理解模板如何支撑可复用代码,STL 如何把容器、算法和迭代器组织成体系。 ## 模块结论 - [[C++模板]] 是 C++ 泛型编程的基础。 - [[STL]] 不只是容器集合,而是“容器 + 算法 + 迭代器 + 函数对象”的组合体系。 - 掌握模板和 STL,C++ 才真正从“会写语法”进入“会组织通用代码”。 ## 一、模板 - 函数模板 - 类模板 - 自动类型推导与显式指定类型 ### 模板在解决什么问题 - 把类型参数化,提高复用性。 - 避免为每种类型反复写相同逻辑。 ## 二、STL 初识 - 容器负责存数据。 - 算法负责处理数据。 - 迭代器负责把算法和容器连接起来。 ## 三、常用容器 - string - vector - deque - list - set / map - stack / queue ### 复习重点 - 不同容器的底层结构和适用场景不同。 - 不是所有“存一组数据”的问题都该优先选 `vector`。 ## 四、函数对象与常用算法 - 函数对象让行为对象化。 - 常用算法配合迭代器使用,体现 STL 风格。 ## 五、易错点 - 模板不是“万能函数”,类型推导有边界。 - STL 容器接口相似,但复杂度和失效规则可能差很多。 - `string` 是类,不是 `char*` 的简单别名。 ## 六、复习提问 - 模板为什么是 C++ 泛型编程核心? - STL 为什么强调容器、算法、迭代器协作? - 常见容器之间该如何按场景选择? ## 来源 - [[raw/Joplin/编程学习项目/C++学习笔记/3. C++提高编程/1. 模板.md]] - [[raw/Joplin/编程学习项目/C++学习笔记/3. C++提高编程/2. STL初识.md]] - [[raw/Joplin/编程学习项目/C++学习笔记/3. C++提高编程/3. STL- 常用容器.md]] - [[raw/Joplin/编程学习项目/C++学习笔记/3. C++提高编程/4. STL- 函数对象.md]] - [[raw/Joplin/编程学习项目/C++学习笔记/3. C++提高编程/5. STL- 常用算法.md]] ## 相关页面 - [[C++]] - [[C++模板]] - [[STL]]