首页 > 其他分享 ><六>无序关联容器

<六>无序关联容器

时间:2022-12-16 08:22:23浏览次数:38  
标签:容器 set map 无序 关联 map1 key unordered

关联容器

无序关联容器->链式哈希表 增删查 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) 当处理海量数据查重复,去重复的时候,常常会用到它,简单应用如下图

标签:容器,set,map,无序,关联,map1,key,unordered
From: https://www.cnblogs.com/erichome/p/16982881.html

相关文章

  • Docker容器安装与基本使用
    一、Docker概述1、docker概述docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的linux机器上,也可以实现虚拟化......
  • <五>详解容器适配器
    标准容器->容器适配器什么叫适配器?1:适配器底层没有自己的数据结构,它是另外一个容器的封装,它的方法,全部由底层依赖的容器进行实现的.像标准库中的stack如下图2:没......
  • 监控容器节点内存使用率
    #-*-encoding:utf-8-*-fromsubprocessimportPopen,PIPE,STDOUTimporttimedefRun_Cmd(cmd):#执行命令p=Popen(cmd,shell=True,stdin=PIPE,st......
  • 3.2 Docker 容器操作命令 1. 容器生成
    在本地有了镜像之后(默认安装Docker后,会自带初始镜像,可通过Dockerimages命令进行查看),开发者就可以使用镜像生成容器,具体命令如下:dockerrun-d-p8888:8080--nam......
  • 1.6 Docker 容器 ip 和端口映射
    在Dokcer中共有四种网络模式:⚫host模式,使用--net=host指定⚫container模式,使用--net=container:NAMEorID指定⚫none模式,使用--net=none指定⚫bridge模......
  • 【JVM故障问题排查心得】「内存诊断系列」Docker容器经常被kill掉,k8s中该节点的pod也
    背景介绍最近的docker容器经常被kill掉,k8s中该节点的pod也被驱赶。我有一个在主机中运行的Docker容器(也有在同一主机中运行的其他容器)。该Docker容器中的应用程序将会计算数......
  • 【JVM故障问题排查心得】「内存诊断系列」Docker容器经常被kill掉,k8s中该节点的pod也
    背景介绍最近的docker容器经常被kill掉,k8s中该节点的pod也被驱赶。我有一个在主机中运行的Docker容器(也有在同一主机中运行的其他容器)。该Docker容器中的应用程序将会......
  • 选对小程序容器,让你事半功倍。
    伴随着时代科技的日新月异,几乎每家企业都会把“数字化转型”挂在嘴边,视其为重要战略计划。但实际上,其中大部分的企业还只是处于换汤不换药的阶段,都是在换马甲,简单地认为数字......
  • grafana 容器无法启动,打印权限问题
    报错日志open/var/lib/grafana/alerting/1/notifications:permissiondenied问题原因sudochown-Rdocker:/var/lib/docker该命令改变了grafana容器的文件权限......
  • Docker 容器编排
    1、清理和准备上篇文章创建并准备一个镜像#移除容器dockerrm-f$(dockerps-aq)redis默认文件下载上传到/app/redis/redis.conf2、docker-compose.ymlversion......