一、介绍
STL(Standard Template Library)标准模板库,为了提升代码的复用性,伴随着面向对象编程思维的发展,建立了一套数据结构与算法的标准:STL。
二、分类
STL从广义上分为三类:
容器 | container |
算法 | algorithm |
迭代器 | iterator |
容器和算法之间通过迭代器进行连接。
STL几乎所有的代码都是用的模板类和模板函数。
三、六大组件
STL的六大组件为:容器,算法,迭代器,仿函数,适配器,空间配置器
3.1 容器
STL的容器是一些广泛使用的数据结构。分为序列式容器和关联式容器:
序列式容器 | 强调值的排序,每个元素有固定的位置 |
关联式容器 | 树形结构,各元素之间没有确定的物理位置关系 |
常用的STL容器包括数组、链表、树、栈、队列、集合、映射表等。
3.2 算法
算法(Algorithums)指有限的步骤内解决问题的办法,分为质变算法与非质变算法:
质变算法 | 在运算过程中会改变元素的值,如:拷贝、替换、删除等 |
非质变算法 | 在运算过程中不改变元素的值,如:查找、计数、遍历、寻找大小值等 |
3.3 迭代器
提供一种方法,既能遍历容器中的每个元素,由不暴露容器的内部具体表示方式。
迭代器分类如下:(迭代器的使用方式与指针类似)
种类 | 功能 | 支持的运算 |
输入迭代器 | 对数据进行只读访问 | ++、==、!、= |
输出迭代器 | 对数据进行只写访问 | ++ |
前向迭代器 | 对数据进行读写访问,能向前推进迭代器 | ++、==、!、= |
双向迭代器 | 对数据进行读写访问,能向前和向后推进迭代器 | ++、- - |
随机访问迭代器 | 对数据进行读写访问,可以以跳跃的方式访问数据 (功能最强大的迭代器) | ++、- -、[ ]、- n、 >、>=、<、<= |
常用容器的迭代器一般为:双向迭代器和随机访问迭代器。
3.4 仿函数
行为类似函数,可作为算法的某种策略。
3.5 适配器(配接器)
用来修饰容器、仿函数、迭代器接口。
3.6 空间配置器
负责空间的配置与管理。