内存池
STL介绍
STL 是 C++ 标准程序库的核心。STL 内的所有组件都由模板构成,其元素可以是任意型别。程序员通过选用恰当的群集类别调用其成员函数和算法中的数据即可,但代价是 STL 晦涩难懂。
C++ 对模板(Template)支持得很好,STL 就是借助模板把常用的数据结构及其算法都实现了一遍,并且做到了数据结构和算法的分离。
例如,vector 的底层为顺序表(数组),list 的底层为双向链表,deque 的底层为循环队列,set 的底层为红黑树,hash_set 的底层为哈希表。
STL 组件主要包括容器,迭代器、算法和仿函数。
容器
容器即用来存储并管理某类对象的集合
。例如鱼缸是用来盛放金鱼的容器。
每一种容器都有其优点和缺点。为满足程序的各种需求,STL 准备了多种容器类型,容器可以是 arrays 或是 linked lists,或者每个元素有特别的键值。
迭代器
迭代器用于在一个对象群集的元素上进行遍历动作。
对象群集可能是容器,也可能是容器的一部分。
迭代器的主要用途是为容器提供一组很小的公共接口。利用这个接口,某项操作可以行进至群集内的下一个元素。
每种容器都提供了各自的迭代器。迭代器了解该容器的内部结构,所以能够正确行进。迭代器的接口和一般指针类似。
算法
算法用来处理群集内的元素,可以出于不同目的搜寻、排序、修改、使用那些元素。所有容器的迭代器都提供一致的接口,通过迭代器的协助,算法程序可以用于任意容器。
SIL 中提供的算法包括搜寻、排序、复制、重新排序、修改、数值运算等。
仿函数
STL中大量运用了仿函数。仿函数具有泛型编程强大的威力,是纯粹抽象概念的例证
STL 特性:
STL 的一个特性是将数据和操作分离。
数据由容器类别加以管理,操作则由可定制的算法定义。迭代器在两者之间充当“粘合剂”,以使算法可以和容器交互运作。
STL 的另一个特性即组件可以针对任意型别运作。
“标准模板库”这一名称即表示“可接受任意型别”的模板,并且这些型别均可执行必要操作。
在 STL 中