首页IT科技顺序无关先后的例子(无序关联容器)

顺序无关先后的例子(无序关联容器)

时间2025-06-16 00:41:57分类IT科技浏览5237
导读:关联容器...

关联容器

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

无序关联容器

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
java中hashmap实现原理(java中HashMap的设计精妙在哪?) 中文编译程序(如何让编译时的出错提示由中文变为英文的? 查看主题 • Ubuntu中文论坛)