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]]