STL诞生
长久以来,软件界希望建立一种可重复利用的东西
C++的面向对象和泛型编程思想就是为了提升复用性
为了建立数据结构和算法的标准,诞生了STL
STL基本概念
STL(Standard Template Library)标准模板库
从广义上分为容器(container),算法(algorithm),迭代器(iterator)
容器和算法之间通过迭代器进行无缝连接
STL几乎所有代码都采用了模板类或模板函数
STL六大组件
六大组件:容器、算法、迭代器、仿函数、适配器(配接器)、空间配置器
容器:各类数据结构
算法:各种常用算法
迭代器:扮演容器和算法的胶合剂
仿函数:行为类似函数、可作为算法的某种策略
适配器:用来修饰容器或者仿函数或迭代器接口的东西
空间适配器:负责空间的配置和管理
STL容器、算法、迭代器
容器分为序列式容器和关联式容器
序列式容器:强调值的排序,序列式容器中的每个元素都有固定位置
关联式容器:二叉树结构,各元素之间没有严格的物理上的顺序关系
算法分为质变算法和非质变算法
质变算法:运算过程中会更改区间内的元素内容(拷贝,替换,删除)等
非质变算法:运算过程中不会更改区间内的元素内容(查找,计数,遍历,寻找极值)等
迭代器提供方法使容器能依序寻访包含的元素,而无需暴露该容器的内部表示方式
每个容器都有自己的迭代器
迭代器种类: