C++:STL简介
文章目录
1.什么是STL
网上有一句话:不会STL,就不要说你会C++,那STL是什么呢。
STL(standard template library-标准模板库)是C++标准库的重要组成部分,其不仅是一个可以复用的组件库,而且是一个包罗数据结构与算法的软件框架。
我们后面需要参考部分源代码参考的是SGI版本的STL代码库。
参考网站:
Reference - C++ Reference
cplusplus.com/reference/string/string/?kw=string
2. STL的六大组件

上述STL组件可以简要理解为:容器存数据,迭代器指位置,算法操作数据,仿函数定制规则,配接器改接口,空间配置器管内存。
一、容器(Containers)
可理解为:用来存储数据的“盒子”
核心作用:管理一组对象,提供不同的存储和组织方式
分类:
- 序列容器:
vector(动态数组)、list(链表)、deque(双端队列) - 关联容器:
set、map(自动排序,红黑树) - 无序容器:
unordered_set、unordered_map(哈希表)
容器决定了数据怎么放、怎么找。
二、迭代器(Iterators)
可以理解为:容器和算法之间的“桥梁”
核心作用:统一方式遍历容器中的元素(像广义指针)
分类:
- 输入/输出迭代器
- 正向迭代器
- 双向迭代器
- 随机访问迭代器
迭代器让算法不用关心底层容器是什么。
三、算法(Algorithms)
可以理解为:对容器中的数据进行操作的函数
核心作用:提供通用的数据处理逻辑(排序、查找、拷贝等)
举例:sort、find、reverse、merge
特点:与容器类型解耦,通过迭代器与具体容器协作
算法是“工具函数”,拿迭代器干活。
四、仿函数(Functors)
可以理解为:像函数一样能调用的对象
核心作用:定制算法的行为(比如自定义排序规则)
例子:greater<int>(降序比较)
仿函数是“可定制的算法开关”。
五、配接器(Adapters)
可以理解为:给容器、迭代器、函数“换个包装”
核心作用:改造已有接口,提供新的使用方式
分类:
- 容器配接器:
stack(栈)、queue(队列)、priority_queue(优先队列) - 迭代器配接器:
reverse_iterator(反向迭代器) - 函数配接器:
bind、function(C++11 后)
配接器是“换个用法”的转换层。
六、空间配置器(Allocators)
负责容器的底层内存管理
核心作用:封装内存分配与释放策略(构造函数和析构分离)
默认配置器:std::allocator<T>
例子:vector 内部通过 allocator 获取内存
空间配置器是 STL 的“后勤部”,日常开发很少直接碰。
欢迎大家批评指正!!!
更多推荐



所有评论(0)