<六>无序关联容器
2023-02-18 16:33:47 时间
关联容器
无序关联容器->链式哈希表 增删查 O(1)
set:集合key map:映射表[key,value]
unordered_set 单重集合 不允许重复
unordered_multiset 多重集合
unordered_map 单重映射表
unordered_multimap 多重映射表
有序关联容器=》红黑树 增删查O(log2N)
set
multiset
map
multimap
unordered_set<int> set1
for(int i=0;i<50;i++){
set1.insert(i);
}
for(int m=0;m<50;m++){
set1.insert(m);
}
cout<<se1.size()<<endl;//容器个数, unordered_set<int> 不允许重复值
cout<<set1.count(5)<<endl;//值为5的个数
auto it1=set1.begin();
for(;it1!=set1.end();++it1){
cout<<*it1<<endl;
}
set1.erase(10);//删除10的元素,如果连续的删除 要记得更新迭代器
it1=set1.find(20);
for(int x : set1){
cout<<x<<endl;
}
unordered_map [key,value]=>打包成 pair
unordered_map<int,string> map1;//不允许重复
map1.insert(make_pair(100,"AAA"));
map1.insert({200,"bbb"});
map1.insert({200,"ccc"});//key 重复了,不会被插进去
cout<<map1.size()<<endl;//包含键值对的个数
cout<<map1[100]<<endl;//map 提供了[]的重载函数来查询,
**注意:**map1[555] 使用中括号来查询会有一个问题,如果key不存在,那么555这个键值会被插入到map中,valu的值会用一个默认值!!!
operator[]会返回插入值得引用,如下
value & operator[](const K key){
return map.insert[key,string()];
}
所以 map1[999]="ABAB"; 由于999不存在,相当于[999,"ABAB"]被插到map里了
而 map1[100]="MMM"; 由于100key 值存在,相当于 把100的value值给修改了
map1.erase(100);//删除Key=100的
auto it1 =map1.find(200);
if(it1!=map1.end()){
cout<<it1->first<<"="<<it1->second<<endl;
}
unordered_map 由于增删查时间是O(1) 当处理海量数据查重复,去重复的时候,常常会用到它,简单应用如下图
相关文章
- 深度学习中的互信息:无监督提取特征
- 论文解读(SUGRL)《Simple Unsupervised Graph Representation Learning》
- 论文解读(VGAE)《Variational Graph Auto-Encoders》
- ERROR: No matching distribution found for torch==1.2.0 解决方法
- 使用UltraISO(软碟通)制作U盘启动盘完整教程
- HMS Core 6.3.0 版本发布公告
- 论文解读(GraphCL)《Graph Contrastive Learning with Augmentations》
- 矩阵的迹及迹的求导
- 社交应用如何防范“虚假流量”?安全检测服务帮你快速识别
- 论文解读《Cauchy Graph Embedding》
- 针对性运营帮助用户生命周期价值升级
- 智能运营助你轻松玩转消息推送
- 拉普拉斯特征映射(Laplacian Eigenmaps)
- GNN layer
- torch.spmm矩阵乘法
- PyTorch查看模型和数据是否在GPU上
- 轻松集成视频编辑服务一键染发能力,多变发色随心换
- 邻接矩阵转稀疏矩阵
- 多分类任务中不同隐藏层层数对实验结果的影响(使用GPU)
- 3分钟了解如何跨应用、跨形态无缝登录