C++模板与STL.md 2.2 KB


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