C++标准模板库STL
STL介绍(Standard Template Library)
-
C++中的STL实现了
数据结构和算法的分离
,被包括在C++标准库(C++ Standard Library)中。 -
STL主要实现了对常用的基本数据结构和基本算法进行
类封装
,我们通过创建这些数据对象、调用数据对象用到的方法,简化开发流程。
STL组成部分简介
- 容器(Container):一些封装的数据结构,例如list、deques、vector、front list等
- 迭代器(Iterator):为访问容器中的数据而写的一些方法。
- 算法(Algorithm):为处理容器中的数据而写的一些方法。
- 仿函数(Functor):实现了函数功能的类。(本质是一个类,里面只实现算法(函数)功能,调用时看着像使用函数,但使用的是类创建对象里面的方法)
- 适配器(Adaptor):类和类之间转换、合作时,由于代码不兼容,因此需要另一些类代码完成中间转换、合作的“手续”事宜。这些因为克服STL中类代码合作、转换的代码封装称为适配器。
- 分配器(Allocator):给数据分配内存一些代码。
STL各组成部分详解
-
容器(Container)
1.序列式容器(Sequence Container):每个数据都有自己固定的位置,这些位置与数据值无关。
(1)
Vector
:数组形式保存数据,单向数组结构。在Vector中,数组的尾部添加和删除数据快速,但在中部和首部插入数据比较费时。
(2)
Deque
:数组形式保存数据,双向数组结构,在Deque中,数组的头部和尾部添加和删除数据快速,在中部插入数据比较费时。
(3)
List
:双向链表结构,添加删除数据都非常快,修改指针即可。
2.关联式容器(Associated Container):每个数据的位置不固定,数据的排列方式和数据的值以及这组其他数据值有关。(存在关联)
(1)
Set/Multiset
:内部数据根据其值自动排序,内部由二叉树实现查找。Set中所有值仅出现一次,不存在重复的值;Multiset中可以有多个数值相同的数据。
(2)
Map/Multimap
:内部数据根据其值自动排序,内部由二叉树实现查找。Map中键值和实值一一对应,键值和实值都不能重复出现;Multimap中键值和实值也是一一对应,但可以重复出现相同的键值实值对。 -
迭代器(Itaerator)
迭代器是C+