一些冷门但好用的STL容器
438 字
2 分钟
一些冷门但好用的STL容器
STL-multiset
用法:
#include <set>/*---*/multiset<typename _Kty, typename _Pr = less<_Kty >,typename _Alloc = allocator <_Kty > >用处:优先队列(但可以访问指定下标元素)
与priority_queue的对比:
| 功能 | priority_queue | multiset |
|---|---|---|
| 优先 | 支持 | 支持 |
| 插入/删除复杂度 | O(n log(n)) | O(n log(n)) |
| 访问指定下标 | 不支持 | 支持 |
| 插入/添加新值 | .push() | .insert() |
| 删除指定元素 | 不知道支不支持 | .erase(下标)) |
| 删除指定值 | 不知道支不支持 | .erase(值)删除所有同值元素 |
| 剩下的不知道 |
优先:默认较小值优先,可使用multiset<int, greater<int>>较大值优先
遍历:指针遍历,用法如下:
for (auto it = multiset.begin(); it != multiset.end(); ++it) *it或
for(auto it : multiset) it访问(i为要访问的下标):
*next(multiset.begin(), i);补充:multiset内置lower_bound及upper_bound,且multiset无需排序,所以:
vector<int> a;/*input*/sort(a.begin(), a.end());auto lbn = lower_bound(a.begin(), a.end(), n);等价于
multiset<int> a;/*input*/auto lbn = a.lower_bound(5);STL-tuple
使用:
#include<tuple>/*---*/tuple<typename ..._Types>简述:相当于能包含多个多种类型(包括STL)的pair
支持字典序排序(也就是可以像pair一样塞到priority_queue里)
实例:
priority_queue < tuple<int, string, vector<int, int> > >访问:
get<i> tuple//i指下标(tuple的第i项),tuple指定义了tuple类型的名字STL-iota
手动for循环初始化是一种很不健康的行为(?主要还是不好看
在初始化并查集fa数组时很好用
以递增的顺序将指定区间赋值,例:
iota(vector.begin(), vector.end(), 0);此时vector中每一项的值等于其下标
至于set,map,unordered_map,unordered_set,sort,vector,string等STL基础容器相信大家已经了如指掌了,这里不再赘述
如果你连上面这几个容器都不会建议重新从红题开刷
其他的一些我觉得没啥用或者过于冷门就没列出来了
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!
相关文章智能推荐
1
关于我的OI代码缺省源
OI以后懒得写了直接复制
2
题解:P1111 修复公路
题解题解:P1111 修复公路
3
题解:P5690 [CSP-S 2019 江西] 日期
题解题解:P5690 [CSP-S 2019 江西] 日期
4
题解:P1360 [USACO07MAR] Gold Balanced Lineup G
题解题解:P1360 [USACO07MAR] Gold Balanced Lineup G
5
从0写软件-Win32应用代码模板
C++有点像大份
随机文章随机推荐











