c++常用容器总结
作者:
六便士
,
2022-03-13 12:20:29
,
所有人可见
,
阅读 170
/*
vector 变长数组,倍增思想
size() 返回元素个数
empty() 返回是否为空
clear() 清空
front() 返回第一个数
back()返回最后一个数
push_back()往最后插入一个数
pop_back()删除最后一个数
迭代器 begin(),end()
[]
支持比较运算,字典序
pair<type,type>存储一个二元组
first第一个元素
second第二个元素
比较运算,双关键字,字典序
make_pair()或{,}
string 字符串,substr(),c_str()
size()/length()
empty()
clear()
substr(子串起始位置,子串长度)长度超出范围时输出到最后
queue 队列
没有clear()
push()向队尾插入一个元素
front() 返回队头元素
back() 返回队尾元素
pop() 弹出队头元素
priority_queue, 优先队列 堆
push() 插入一个元素
top() 返回堆顶元素
pop() 弹出堆顶元素
默认大顶堆
小顶堆 :插入负数 或
priority_queue<int, vector<int>,greater<int>> heap;
stack 栈
size()
empty()
push() 栈顶插入元素
top() 返回栈顶元素
pop() 弹出栈顶元素
deque 双端队列,随机访问,加强vector
size()
empty()
clear()
front()
back()
push_back()/pop_back()
push_front()/pop_front()
begin()/end()
[]
set,map,multiset,multimap 基于平衡二叉树(红黑树)动态维护 有序 序列
size()
empty()
clear()
set/multiset
前者不能有重复元素,后者可以
insert() 插入一个数
find() 查找一个数
count() 返回某一个数的个数
erase()
输入一个数x,删除所有x O(k + logn)
输入一个迭代器,删除这个迭代器
lower_bound/upper_bound()
lower_bound(x) 返回>=x的最小的数的迭代器
upper_bound(x) 返回>x 的最小的数的迭代器
map/multimap
insert() 插入的数是一个pair
erase() 输入的时pair或者迭代器
find()
[] O()
lower_bound()
upper_bound()
unordered_set,unordered_map,unordered_multiset,unorder_multimap,哈希表
和上面类似,但不支持lower和upper操作
增删改查时间复杂度O(1)
bitset 压位
bitset<10000>s;
~ & |
>> <<
== !=
[]
count() 返回有多少个1
any() 判断是否至少有一个1
none() 判断是否全为0
set(), 把所有位置成1
set(k,v) 将第k位变成v
reset 所有位置0
*/