一、STL的六大组件
-
容器(containers):
- 各种数据结构,如vector, list, deque, set,map,用来存放数据
- 从实作的角度看,STL 容器是一种class template。就体积而言,这一部份很像冰山在海面下的比率
-
算法(algorithms):
- 各种常用算法如sort,search,copy,erase…
- 从实作的角度看,STL算法是一种function template
-
迭代器(iterators):
-
扮演容器与算法之间的胶着剂,是所谓的“泛型指标”。共有五种类型,以及其他衍生变化。
- 从实作的角度看, 迭代器是一种将 operator*, operator->, operator++, operator--等指标相关操作予以多载化的class template。所有STL容器都附带有自己专属的迭代器——是的,只有容器设计者才知道如何遍历自己的元素。原生指标(native pointer)也是一种迭代器。
-
仿函式(functors):
-
行为类似函式,可做为算法的某种策略(policy)
- 从实作的角度看,仿函式是一种重载了operator()的class或class template。一般函式指标可视为狭义的仿函式
-
配接器(adapters):
-
一种用来修饰容器(containers)或仿函式(functors) 或迭代器(iterators)接口的东西
- 例如STL提供的queue和stack,虽然看似容器,其实只能算是一种容器配接器,因为它们的底部完 全借重 deque,所有动作都由底层的 deque 供应。改变functor接口者,称 为function adapter,改变 container 接口者,称为 container adapter,改变 iterator 接口者,称为 iterator adapter
-
配置器(allocators):
-
负责空间配置与管理
- 从实作的角度 看, 配置器是一个实现了动态空间配置、空间管理、空间释放的 class template。
二、六大组件的交互关系

相关文章: