容器(containers) : 所谓容器就是用来存放数据的东西,在STL中的容器就是各种数据结构,其中顺序容器有:array,vector,deque,forward_list,list;关联容器有:set,map,multiset,multimap;无序关联容器:unordered_set, unordered_map, unordered_multiset, unordered_multimap。从实现来看STL容器是一种class template
算法(algorithm): 各种常用的算法如sort,search,copy,find…,从实现来看,STL算法是一种function template
迭代器(Iterator): 是容器与算法之间的媒介,迭代器是一种将operator*,operator->,operator++,operator—等相关操作符重载的class template.所有的STL容器都有自己专属的迭代器,即只有容器的设计者才知道如何遍历所有的元素。
仿函数 (functors): 行为类似函数,可作为算法的某种策略,从实现上看仿函数是一种重载了operator()的class或class template。一般函数指针可视为狭义的仿函数。
适配器(Adapters): 运用的是适配器模式,用来修饰容器、仿函数或者迭代器的接口,使其能够协同工作。STL中提供了容器适配器,仿函数适配器以及迭代器适配器
空间分配器(allocators):负责空间的配置与管理,从实现上来看,空间分配器是实现了一个动态空间配置、空间管理、空间释放的class template
STL六大组件的交互关系:Container通过allocators获取数据储存空间,Algorithm通过Iterator存取Container中的数据,Functors可以帮助Algorithm完成不同的策略变化,Adapter可以修饰或套接Functor。如下图: