STL
算法常用容器
- vector,变长数组,倍增的思想
- string,字符串,substr(),c_str()
- queue,队列,push(), front(), pop()
- priority_queue,优先队列,push(), top(), pop()
- stack,栈, push(), top(), pop()
- deque,双端队列
- set, map, multiset, multimap, 基于平衡二叉树(红黑树),动态维护有序序列
- unordered_set, unordered_map, unordered_multiset, unordered_multimap, 哈希表
- bitset, 压位
接下来详细介绍一下每种容器算法常用函数
-
vector:
size() 返回元素个数
empty() 返回是否为空
clear() 清空
fornt()/back()
push_back()/pop_back()
begin()/end() 支持比较运算,按字典序
-
pair<int,int>
first, 第一个元素
second, 第二个元素
支持比较运算,以first为第一关键字,以second为第二关键字(字典序) -
string,字符串,sub_str, c_str()
size()
empty()
clear() -
queue,队列
size()
empty()
push(),向队尾插入一个元素
front(),返回对头元素
back(),返回队尾元素
pop(),弹出对头元素 -
priority_queue,优先队列,默认是大根堆。
定义大根堆:priority_queue< int > A;
定义小根堆:priority_queue<int,vector< int >,greater< int >> A;push(),插入一个元素
top(),返回堆顶元素pop(),弹出堆顶元素
-
stack(),栈
size()
empty()
push(),向栈顶插入一个元素
top(),返回栈顶元素
pop(),弹出栈顶元素 -
deque,双端队列(非常牛逼,但是速度非常慢,一般不用)
size()
empty()
clear()
front()
back()
push_back()/pop_back()push_front/pop_front()
begin()/end() -
set, map, multiset, multimap, 基于平衡二叉树(红黑树),动态维护有序序列
size()
empty()
clear()
begin()/end() ++,–,返回前驱和后继set/multiset ==> set内部没有重复元素,插入重复元素会被忽略这个操作。/multiset内部可以有重复的元素。
insert() 插入一个数
find() 查找一个数
count() 返回某一个数的个数
erase()
(1)、输入一个数x,删除所有x
(2)、输入一个迭代器,删除这个迭代器
lower_bound()/upper_bound()
lower_bound(x) 返回大于等于x的最小的数的迭代器
upper_bound(x) 返回大于x的最小的数的迭代器
map/multimap
insert() 插入的数是一个pair
erase() 输入的数是pair或者迭代器
find()
[]
lower_bound()/upper_bound() -
unordered_set, unordered_map, unordered_multiset, unordered_multimap, 哈希表
和上面类似
不支持 lower_bound()/upper_bound(),迭代器的++、–