STL基础知识
STL的全称是,standard template library,中文译名为标准模板库,其包含有大量的模板类和模板函数,是 C++ 提供的一个基础模板的集合,用于完成诸如输入/输出、数学计算等功能。它位于各个 C++ 的头文件中,即它并非以二进制代码的形式提供,而是以源代码的形式提供 。
在C++中,STL具体指:容器、算法和迭代器,它借助模板把常用的数据结构及其算法都实现了一遍,并且做到了数据结构和算法的分离
特性
STL具有以下特性:
- 它将容器和算法之间通过迭代器进行无缝连接
- 几乎所有的代码都采用了模板类和模板函数
STL六大组件:容器、算法、迭代器、仿函数、适配器、空间配置器
- 容器:各种数据结构,如vector、list、deque、set、map等,用来存放数据。
- 算法:各种常用的算法,如sort、find、copy、for_each等
- 迭代器:扮演了容器与算法之间的胶合剂
- 仿函数:行为类似函数,可作为算法的某种策略
- 适配器:一种用来修饰容器或者仿函数或迭代器接口的东西
- 空间配置器:负责空间的配置与管理
容器分为两大类:顺序容器和关联式容器
- 顺序容器:强调值的排序,每个元素均有固定的位置
- 关联式容器:二叉树结构,各元素之间没有严格的物理上的顺序
- 容器放入元素都是值传递,而非引用传递,向容器放入元素是是复制一份进去
迭代器的种类:主要支持后三种,迭代器是一个类,这个类封装了指针
种类 | 功能 | 支持运算 |
---|---|---|
输入迭代器 | 对数据的只读访问 | ++、==、!= |
输出迭代器 | 对数据的只写访问 | ++ |
前向迭代器 | 读写操作,并能向前推进迭代器 | ++、==、!= |
双向迭代器 | 读写操作,并能向前向后操作 | ++、– |
随机访问迭代器 | 读写操作,可以以跳跃的方式访问任意数据,功能最强的的迭代器 | ++、–、[n]、-n、<、<=、>、>= |