-
STL(Standared Template Library)即标准模板库,惠普实验室开发的一系列软件的统称。他是由Alexader Stepanov、Meng Leng Lee和David R Musser在惠普实验室工作时所开发出来的。
-
STL主要是一些”容器“ 的集合,这些”容器“ 有list、vector、set、map等等,STL也是算法和其他一些组件的集合,是世界上顶级C++程序员多年的杰作,是泛型编程的一个经典范例
-
STL的目的是标准化组件,这样就不用重新开发,可以使用现成的组件。STL是C++的一部分,内建在C++ 编译器中,因此不用额外安装什么
-
容器(containers) 迭代器(iterators) 空间配置器(allocator) 配接器(adapters) 算法(algorithms) 仿函数(functors)
STL简介
-
容器
-
特殊的数据结构,实现了数组、链表、队列、等等,实质是模板类
-
迭代器
-
一种复杂的指针,可以通过其读写容器中的对象,实质是模板类
-
-
算法
-
读写容器对象的逻辑算法:排序、遍历、查找、等等,实质是模板函数
-
-
空间配置器
-
容器的空间配置管理模板类
-
-
配接器
-
用来修饰容器、仿函数、迭代器接口
-
-
组件间的关系
-
容器通过配置器取得数据储存空间,算法通过迭代器 存取容器 内容,仿函数可以协助算法完成不用的策略变化,配接器可以修饰或套接仿函数。
-
标准容器
-
STL标准模板库是一种泛型编程。泛型编程关注的是算法,在C++中,利用模板完成编写独立于数据类型的代码。
-
STL容器包括:数组、链表、队列等等;能进行查找、排序、随机排队等等。
-
STL序列容器:vector、deque、list
-
STL关联容器:set、mulitiset、map、mulitimap
-
STL迭代器:iterator
STL序列容器
-
vector
-
将元素置于一个动态数组中加以管理,可以随机存取元素(用索引直接存取),数组尾部添加或移除元素非常快速 ,但是在中部或者头部安插元素比较费时
-
-
deque
-
是“double-ended queue” 的缩写,可以随机存取元素(用索引直接存取),数组头部和尾部添加和尾部添加或移除元素都非常快速 ,但是在中部或头部安插元素比较费时
-
-
list
-
双向链表,不提供随机存取(按顺序走到需存取的元素),在任何位置上执行插入或删除动作都非常迅速 ,内部只需调整一下指针
-
STL关联容器
-
set/multiset
-
内部的元素依据其值自动排序,set内的相同数值的元素只能出现一次,multisets内可包含多个数值相同的元素 ,内部由二叉树实现(实际上基于红黑树(RB-tree)实现),便于查找。
-
-
map/multimap
-
map的元素是成对的键值/实值,内部的元素依据其值自动排序,map内的相同数值的元素只能出现一次,Multimap内可包含多个数值相同的元素,内部由二叉树实现(实际上基于红黑树实现),便于查找
-
-
其它一些容器:
-
hash_map,hash_set,hash_multiset,hash_multimap
-