1、容器(containers)
如vector、list、deque、set、map用来存放数据。从实现的角度看,STL容器是一种类模板。
2、算法(algorithms)
如sort、search、copy、erase。从实现角度看,STL算法是一种函数模板。
3、迭代器(iterators)
扮演容器与算法之间的胶合剂,就是所谓的“泛型指针”。从实现的角度看,迭代器是一种将operator*、operator->、operator++、operator--等指针相关操作予以重载的类模板。原生指针(native pointer)也是一种迭代器。
4、仿函数(functors)
行为类似函数,可以作为算法的某种策略。仿函数是一种重载了operator()的类或类模板。一般函数指针可视为狭义的仿函数。
5、适配器(adapters)
一种用来修饰容器、仿函数、迭代器接口的东西。
STL提供的queue和stack,虽然看似容器,其实只能算是一种容器适配器,因为他们的底层完全是由借助deque,所有操作都是由底层的deque供应。
6、配置器(allocators)
负责空间配置与管理。从实现的角度看,配置器是一个实现了空间配置、空间管理、空间释放的类模板。
STL六大组件交互关系:
Container通过Allocators取得数据存储空间。
Algorithm通过Iterator存取Container内容。
Functor可以协助Algorithm完成不同的策略变化
Adaptor可以修饰或套接Functor。