介绍
为了建立数据结构和算法的一套标准且降低他们之间的耦合关系,以提高各自的独立性,弹性,交互性(相互合作性),提出STL(Standard Template Library)由亚历山大.斯特潘诺夫(Alexander Stepanov)创建。
分类
- 容器(container): 各种数据结构。
○ 序列式容器:容器中的每个元素都有固定的顺序
○ 关联式容器(会自动排好序):非线性的树结构,可以是二叉树结构,各元素之间没有严格的物理上的顺序关系。 - 算法:
○ 质变算法:指在运算过程中会更改区间内的元素的内容(eg:拷贝,替换,删除等)。
○ 非质变算法:指在运算过程中不会改变区间内的元素内容,(eg:查找,计算,遍历,等)。 - 迭代器:容器和算法之间的胶合剂;是一种支持序列遍历的一种指针的概括。
○ 输入迭代器 :提供对数据的只读访问 -只读 支持++ 、==、 !=
○ 输出迭代器 :提供对数据的只写访问 -只写 支持++
○ 向前迭代器 :提供读写操作,并能向前推进迭代器 -读写 支持++、= =、!=
○ 双向迭代器 :提供读写操作,并能向前向后操作 -读写 支持++、–
○ 随机访问迭代器:提供读写操作,并能以跳跃的方式访问容器的任意数据,是功能最强的迭代器,-读写 支持++、–[n]、-n、<、<=、>、>= - 仿函数:行为类似函数,可以作为算法的某种策略,常实现角度来看,仿函数是一种重载了operator()的class或者class template。
- 适配器:用来修饰容器或者仿函数或者迭代器接口。
- 空间配置器:负责空间的配置与管理,从实现角度看,配置器是一个实现了动态空间配置,空间管理,空间释放的classtempalte。
**交互关系:**容器通过空间配置器取得数据存储空间,算法通过迭代器存储容器中的内容,仿函数可以协调算法完成不同的策略变化,适配器可以修饰仿函数。