一、STL介绍
STL(Standard Template Library,标准模板库),从根本上说,STL是一些“容器”的集合,这些“容器”有list,vector,set,map等,STL也是算法和其他一些组件的集合。
首先呢,让我们一起来理解一下STL的六大组件:
1、STL六大组件简单介绍
(1)容器(Container):作为STL的最主要组成部分--容器,分为序列式容器和关联式容器:
序列式容器主要包括:向量(vector),双端队列(deque),表(list),队列(queue),堆栈(stack)
关联式容器主要包括:集合(set),多重集合(multiset),映射(map),多重映射(multimap)。
(2)算法(Algorithm):算法部分主要由头文件,和组成;STL的算法也是非常优秀的,它们大部分都是类属的,基本上都用到了C++的模板来实现,这样,很多相似的函数就不用自己写了,只要用函数模板就可以了。
(3)迭代器(Iterator):扮演容器与算法之间的胶合剂,是所谓的“泛型指针”,共有五种类型,以及其它衍生变化,从实现的角度来看,迭代器是一种将:Operators*,Operator->,Operator++,Operator–等相关操作予以重载的Class Template。所有STL容器都附带有自己专属的迭代器——是的,只有容器设计者才知道如何遍历自己的元素,原生指针(Native pointer)也是一种迭代器。
(4)仿函数(Functors): 行为类似函数,可作为算法的某种策略(Policy),从实现的角度来看,仿函数是一种重载了Operator()的Class 或 Class Template。一般函数指针可视为狭义的仿函数。
(5)配接器(适配器)(Adapters):一种用来修饰容器(Containers)或仿函数(Functors)或迭代器(Iterators)接口的东西,例如:STL提供的Queue和Stack,虽然看似容器,其实只能算是一种容器配接器,因为 它们的底部完全借助Deque,所有操作有底层的Deque供应。
(6)配置器(Allocators):