一、STL基础
1、STL是为了提高代码的可重复使用而产生,提供了一个标准的模板库,可供直接调用。
2、为了建立数据结构和算法的一套标准,而诞生了STL
3、STL从广义上可以分为:容器(container)、算法(algorithm)、迭代器(iterator)
4、容器和算法之间通过迭代器进行连接。
5、STL几乎所有的代码都采用了模板类或者模板函数。
二、STL六大件
STL大体分为六大组件,分别是:容器、算法、迭代器、仿函数、适配器(配接器)、空间配置器
1、容器:各种数据结构,如 vector、list、deque、set、map 等,用来存放数据。
2、算法:各种常用的算法,如 sort、find、copy、for_each等。
3、迭代器:扮演容器与算法之间的胶合剂。
4、仿函数:行为类似函数、可作为算法的某种策略。
5、适配器:一种用来修饰容器或者仿函数或者迭代器接口的东西
6、空间配置器:负责空间的配置与管理
(1)、容器
(2)、算法
(3)、迭代器
三、STL组成
1、顺序容器
vector
:可变数组deque
:双端队列list
:双向链表forward_list
:单向链表array
:固定数组大小(C++11)sring
:字符串
2、适配器
queue
:单向队列stack
:栈priority_queue
:拥有优先级的队列
3、泛型算法
标准库并未给每个容器添加了大量的功能,而是提供了一组算法,这些算法中的大多数都是独立于特定容器的,它们可以用于不同类型的容器和不同类型的元素。
大多数容器都是定义在<algorithm>
头文件中的,通过迭代器来与容器之间建立联系。对容器中的元素进行操作。常用的泛型算法总结归纳
4、关联容器
关联容器都支持高效的关键字查找和访问。主要的关联容器是:map
和set
,并由此一共衍生了8个关联容器。
map
:关联数组,保存键值对 key-valueset
:关键字值multimap
:可重复出现multiset
:可重复出现unordered_map
:哈希函数组织的无序mapunordered_set
:哈希函数组织的无需setunordered_multimap
:无序可重复mapunordered_multiset
:无序可重复set