STL实现的是依据泛型思维架设起来的一个概念结构。这个以抽象概念为主体而非以实际类为主体的结构,形成严谨的接口标准。在此接口下,任何组件都有最大的独立体,并以所谓迭代器(iterator)胶合起来,或以所谓适配器(adapter)互相配接,或以所谓仿函数(functor)动态选择某种策略(policy或strategy)。
STL六大组件:

  1. 容器 containers:各种数据结构,如vector,list,deque,set,map用来存放数据。从实现的角度来看,STL容器是一种class template。
  2. 算法 algorithms:各种常用算法如sort、search、copy、erase等。从实现的角度来看,STL算法是一种function template。
  3. 迭代器 iterators:扮演容器与算法之间的胶合剂。是所谓的泛型指针。从实现角度来看,迭代器是一种将operator*,operator->,operator++,operator–等指针相关操作予以重载的class template。
  4. 仿函数 functors:行为类似函数,可作为算法的某种策略(policy)。从实现角度看,**仿函数是一种重载了operator()的class或class template。**一般函数指针可视为狭义的仿函数。
  5. 适配器 adapters:一种用来修饰容器或仿函数或迭代器接口的东西。例如,STL提供的queue和stack,虽然看似容器,其实只能算是一种容器适配器,因为它们的底部完全借助deque,所有操作都由底层的deque供应。改变functor接口者,称为function adaptor;改变container接口者,陈为container adapter;改变iterator接口者,称为iterator adapter。适配器的实现技术很难一言以蔽之,必须逐一分析。
  6. 配置器 allocators:负责空间配置与管理。从实现角度来看,配置器是一个实现了动态空间配置、空间管理、空间释放的class template。