stl基本用法
作者:
一曲长歌行
,
2021-05-09 20:30:46
,
所有人可见
,
阅读 266
/*
vector 变长数组 倍增思想
size() 返回元素个数
empty() 返回是否为空
clear() 清空
front()/back() 返回vector的第一个数/返回vector的最后一个数
push_back()/pop_back() 向vector的最后插入一个数/把vector的最后一个数删掉
begin()/end() vector的第0个数/vector的最后一个数的后面一个数,迭代器
支持比较运算,按字典序
pair<int,int>
first 第一个元素
second 第二个元素
支持比较运算 ,以first为第一个关键字,以second为第二个关键字 ,也是字典序
string 字符串
substr()返回某一个子串,有两个长度,第一个是起始位置,另一个是长度
c_str()返回字符数组对应的头指针
size()/length()返回字符串长度
empty()
clear()
queue(队列:先进先出)
push() 队尾插入元素
front() 返回队头元素
back() 返回队尾元素
pop() 把队头弹出
size()
empty()
没有clear()函数
priority_queque(优先队列) 默认大根堆 头文件是queue
push()往堆里插入元素
top()返回堆顶元素
pop()弹出堆顶元素
没有clear()函数
定义为小跟堆得方式:priority_queue<int,vector<int>,greater<int>>q;
stack(栈:先进后出)
size()
empty()
push()往栈顶添加一个元素
top()返回栈顶元素
pop()弹出栈顶元素
没有clear()函数
deque(双端队列:队头队尾都可以插入删除)
size()
empty()
clear()
front()返回第一个元素
back()返回最后一个元素
push_back()/pop_back()向队尾插入元素/将队尾元素弹出
push_front()/pop_front()向队头插入元素/将队头元素弹出
begin()/end()迭代器
set,map,multiset,multimap基于平衡二叉树(红黑树) ,动态维护有序序列
size()
empty()
clrer()
begin()/end() 支持++/-- 返回前驱和后继
set/multiset set里面不能有重复元素,multiset里面可以有重复元素
insert() 插入一个数
find()查找某一个数
count()返回某一个数的个数
erase()
(1)输入一个数x,删除所有x;
(2) 输入一个迭代器,删除这个迭代器
lower_bound()/upper_bound()
lower_bound() 返回大于等于x的最小的数(下界)
upper_bound() 返回大于x的最小的数 (下届)
map/multimap
insert() 输入的数是一个pair
erase() 输入的数是一个pair或迭代器
find()
lower_bound()/upper_bound()
unordered_set,unordered_map,unordered_multiset,unordered_multimap基于哈希表实现
和上面的set,map,multimap一样
不支持lower_bound()/upper_bound(),迭代器的++/--
但是时间复杂度是o(1) ,上面时间复杂度是o(logn)
bitset,压位
bitset<1000>s
~,&,^,|
>>,<<
==,!=
count返回有多少个1
any()判断至少有一个1
none()判断是否全为0
set()把所有位置成1
set(k,v)把第k位变为v
reset()把所有位变为0
flip()等价于~
flip(k)把第k位取反
*/