STL(标准模板库):是C++标准库的重要组成部分。借用STL源码剖析这本书中的一句话:
为了建立数据结构和算法的一套标准,并且降低其间的耦合关系以提升各自的独立性、弹性、交互操作性,C++诞生了STL。
由此可见STL相对于C++来说是相当的重要了 。STL由六大组件构成:
- 容器:各种的数据结构,用来存放数据;分为关联式容器(map、set)和非关联式容器(string、vector、list等)
- 算法:各种常用的算法在STL中都提供了;如sort、search、find、swap
- 迭代器:容器中的数据使用算法的桥梁就是迭代器,由于每种容器遍历的方式不同,故每种容器都有其自己的迭代器,有iterator(正向)和reverse_iterator(反向)迭代器,自身都实现了*、->、++、--等操作
- 仿函数:主要功能是搭配STL中的算法使用,在类中实现operator( ),让类有了函数的行为
- 配接器(容器适配器):有stack、queue和priority_queue,是各种容器的底层实现。不支持迭代器的相关操作,有push、pop来操作元素
- 空间配置器: 负责空间的分配、管理。实现了动态开辟时的空间配置、空间管理、空间释放。
STl组件之间的关系:容器通过空间配置器获得存储数据的空间,算法通过迭代器存取容器的内容,仿函数可以帮助算法完成不同的策略变化,配接器可以修饰仿函数