STL概述
STL是”Standard Template Library“的缩写,中文译为”标准模板库“;STL是C++标准库的一部分,不用单独安装
C++对模板(Template)支持的很好,STL就是借助模板把常用的数据结构及算法都实现了一遍,并且做到了数据结构和算法的分离;例如,vector的底层为顺序表(数组),list的底层为双向链表,deque的底层为循环队列,set的底层为红黑树,unordered_map(hash_map)的底层为哈希表
STL包含:
-
容器类
各种数据结构,如vector,list,deque,set,map等用来存放数据 -
迭代器
扮演容器于算法之间的胶合剂,是所谓的“泛型指针”,共有五种类型,以及其他衍生变化,从实现角度来看,迭代器是一种将operator*,operator->,operator++,operator–等指针相关操作予以重载的类模板,所有STL容器都附带有自己专属的迭代器,只有容器设计者才知道如何遍历自己容器中的元素 -
算法
各种常用算法如sort,search,copy,erase等等 -
仿函数
行为类似函数,可做为算法的某种策略,实现的角度来看,仿函数是一种重载operator()的类或者类模板 -
配接器
一种用来修饰容器或仿函数或迭代器接口的东西;例如,STL提供的stack,queue,虽然看是容器,其实只能算是一种容器配接器,因为他们的底层完全借助deque,所有操作底层都是deque提供的 -
配置器
负责空间配置与管理
vector
C++ STL vector: link.
list
C++ STL list: link.
duque
C++ STL duque: link.
map set
C++ STL map set: link.