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的六大组件

上述STL组件可以简要理解为:容器存数据,迭代器指位置,算法操作数据,仿函数定制规则,配接器改接口,空间配置器管内存。

一、容器(Containers)

可理解为:用来存储数据的“盒子”

核心作用:管理一组对象,提供不同的存储和组织方式
分类:

  • 序列容器:vector(动态数组)、list(链表)、deque(双端队列)
  • 关联容器:setmap(自动排序,红黑树)
  • 无序容器:unordered_setunordered_map(哈希表)
    容器决定了数据怎么放、怎么找。

二、迭代器(Iterators)

可以理解为:容器和算法之间的“桥梁”

核心作用:统一方式遍历容器中的元素(像广义指针)
分类:

  • 输入/输出迭代器
  • 正向迭代器
  • 双向迭代器
  • 随机访问迭代器
    迭代器让算法不用关心底层容器是什么。

三、算法(Algorithms)

可以理解为:对容器中的数据进行操作的函数

核心作用:提供通用的数据处理逻辑(排序、查找、拷贝等)
举例:sortfindreversemerge
特点:与容器类型解耦,通过迭代器与具体容器协作
算法是“工具函数”,拿迭代器干活。

四、仿函数(Functors)

可以理解为:像函数一样能调用的对象

核心作用:定制算法的行为(比如自定义排序规则)
例子:greater<int>(降序比较)
仿函数是“可定制的算法开关”。

五、配接器(Adapters)

可以理解为:给容器、迭代器、函数“换个包装”

核心作用:改造已有接口,提供新的使用方式
分类:

  • 容器配接器:stack(栈)、queue(队列)、priority_queue(优先队列)
  • 迭代器配接器:reverse_iterator(反向迭代器)
  • 函数配接器:bindfunction(C++11 后)
    配接器是“换个用法”的转换层。

六、空间配置器(Allocators)

负责容器的底层内存管理

核心作用:封装内存分配与释放策略(构造函数和析构分离)
默认配置器:std::allocator<T>
例子:vector 内部通过 allocator 获取内存
空间配置器是 STL 的“后勤部”,日常开发很少直接碰。


欢迎大家批评指正!!!

更多推荐