目录
[1. 容器(Container)](#1. 容器(Container))
[2. 算法(Algorithm)](#2. 算法(Algorithm))
[3. 迭代器(Iterator)](#3. 迭代器(Iterator))
[4. 仿函数(Functor / Function Object)](#4. 仿函数(Functor / Function Object))
[5. 配接器(Adapter)](#5. 配接器(Adapter))
[6. 空间配置器(Allocator)](#6. 空间配置器(Allocator))
[示例:使用 STL 排序和查找](#示例:使用 STL 排序和查找)
这里简介一下,马上深入学习
STL(Standard Template Library,标准模板库) 是 C++ 标准库的核心组成部分,它提供了一套通用的容器 、算法 、迭代器 和函数对象,采用泛型编程(模板)实现,极大提高了代码的复用性、效率和可读性。
主要组件

1. 容器(Container)
用于存储数据集合的类模板。
-
序列容器 :
string、vector、list、deque -
关联容器 :
map、set、multimap、multiset -
无序关联容器 (C++11 起):
unordered_map、unordered_set等(图片中未列出,但属于扩展)
2. 算法(Algorithm)
对容器中的元素进行操作的通用函数模板。
- 例如:
find(查找)、swap(交换)、reverse(反转)、sort(排序)、merge(合并)
3. 迭代器(Iterator)
连接容器和算法的桥梁,行为类似指针,用于遍历容器中的元素。
- 类型:
iterator(普通迭代器)、const_iterator(只读迭代器)、reverse_iterator(反向迭代器)、const_reverse_iterator(只读反向迭代器)
4. 仿函数(Functor / Function Object)
重载了 operator() 的类对象,可以像函数一样调用。用于算法的自定义操作(如比较、算术)。
- 例如:
greater(大于)、less(小于)
5. 配接器(Adapter)
对容器、迭代器或仿函数进行封装,改变其接口或行为。
-
容器适配器 :
stack(栈)、queue(队列)、priority_queue(优先队列) -
其他适配器:迭代器适配器(如反向迭代器)、仿函数适配器(如
bind)
6. 空间配置器(Allocator)
负责容器的内存分配与释放,以及对象的构造与析构。通常使用默认的 allocator,也允许用户自定义。
示例:使用 STL 排序和查找
cpp
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> vec = {4, 2, 5, 1, 3};
// 排序(算法)
std::sort(vec.begin(), vec.end());
// 查找(算法)
auto it = std::find(vec.begin(), vec.end(), 3);
if (it != vec.end())
std::cout << "Found: " << *it << '\n';
// 使用 lambda 作为函数对象
std::for_each(vec.begin(), vec.end(), [](int n) {
std::cout << n << ' ';
});
return 0;
}
优势
-
代码复用:无需为每种数据结构重写算法。
-
性能:STL 经过高度优化,通常优于手写循环。
-
类型安全:模板在编译期检查类型错误。
-
可扩展:可基于迭代器接口为新容器添加标准算法支持。
注意
-
STL 是 C++ 标准库的一部分,早期(1994年)由 Alexander Stepanov 等人设计并提交给 C++ 标准委员会。如今在 C++ 标准中,"STL" 通常泛指整个 C++ 标准库中的容器、算法和迭代器部分。
-
需包含相应头文件(如
<vector>、<algorithm>),并使用std命名空间。