一、STL介绍
引用维基百科的介绍,标准模板库(英文:Standard Template Library,缩写:STL),是一个C++软件库,大量影响C++标准程序库但并非是其的一部分。 其中包含4个组件,分别为算法、容器、函数、迭代器。
二、容器
分顺序容器、关联容器两类
2.1 顺序容器
1.vector:可变大小数组,支持快速随机访问,在除尾部的其他地方插入或者删除元素可能都很慢
2.list:双向链表,只支持双向顺序访问,在任何位置插入、删除操作都比较快
3.deque:双端队列,支持快速随机访问,在头/尾部插入/删除速度很快
4.string:与vector类似,不过专门用来保存字符
5.array:固定大小数组,支持快速随机访问,不能添加/删除元素
array虽然操作跟内置数组类型类似,但是速度快很多,实际编程中应尽量使用标准容器库
从以上容器及其对应操作不难看出,STL 就是借助模板把常用的数据结构及其算法都实现了一遍,并且做到了数据结构和算法的分离。数据结构对应了容器,泛型算法就对应了数据结构的算法。
2.2关联容器
1.map:关联数组,保存关键字-值对
2.set:关键字即值,只保存关键字的容器
学习了python之后,根据容器本身性质及算法不难将以上的容器联想到python的内置数据类型
STL容器 | python类型 |
vector | list |
string | string |
map | dict |
set | set |
由于python没有指针,链表这一大类数据结构都是要自己定义的。
实际使用中,在没有特定限制下,vector优先考虑。