STL关联容器MAP、SET与multimap、multiset与hashmap、hashset的区别
来源:互联网 发布:中心机房云计算 编辑:程序博客网 时间:2024/06/05 17:09
MAP:底层用红黑树RB_tree实现,在查找、删除、添加等操作都有很高的效率,而且是排好序的,且不允许重复。
hashmap:重点是map,底层基于hashtable实现,哈希表即是散列表,实质是一个数组。Hashmap就是中和了数组和链表的有点,找到了一个寻址容易同时插入删除也容易的方法,它采用的是数组+链表的实现方式。优点是查找、删除、添加的时间复杂度为O(1);缺点也很明显,就是不能有重复,不能排序,占用内存大,只能处理char,int,short等类型,不能处理string,double,float类型,想要处理的话必须自己加hash function,由于不是C++标准,移植性需要考虑在内。
set主要是集合功能,底层采用红黑树,默认排好序。hashset底层通过hashtable实现。
总结:加有hash几个字的一些结构,底层都是由hashtable来提供的,不加的都是由红黑树来提供set和multiset的区别就是后者允许键值重复,map和multimap也一样。实现时通过insert_equal()和insert_unique)来控制。
底层实现
优点
缺点
map
红黑树
添加、删除、查找速度快,默认排好序,键值唯一,占用内存少
添加、删除、查找速度比hashmap慢
hashmap
哈希表(实质是数组)
添加、删除、查找速度比map更快,常数级,不排序,键值唯一
占用内存多
multimap
红黑树
与map相同,多了键值不唯一
添加、删除、查找速度比hashmap慢
set
红黑树
添加、删除、查找速度快,默认排好序,值唯一,占用内存少
添加、删除、查找速度比hashset慢
hashset
哈希表(实质是数组)
添加、删除、查找速度比map更快,常数级,不排序,值唯一
占用内存多
multiset
红黑树
与set相同,多了值不唯一
添加、删除、查找速度比hashset慢
- STL关联容器MAP、SET与multimap、multiset与hashmap、hashset的区别
- STL中hashtable,hashset,hashmap,set,map,multiset和multimap的区别
- STL中hashtable,hashset,hashmap,set,map,multiset和multimap的区别
- STL中HashTable HashMap HashSet Set Map MultiSet MultiMap总结
- hashtable,hashset,hashmap,set,map,multimap,multiset
- STL概览-关联容器set,multiset,map,multimap(四)
- 八、STL中的关联容器set/multiset、map/multimap
- 关联容器(map、set、multimap、multiset)
- 关联容器 map/set/multimap/multiset
- 关联容器(set & multiset & Map& multimap)
- STL容器 set、 multiset、map、multimap
- STL容器:set/map/multiset/multimap 与hash_set/hash_map/hash_multiset/hash_multimap
- STL容器:set/map/multiset/multimap 与hash_set/hash_map/hash_multiset/hash_multimap
- 【STL源码剖析读书笔记】【第5章】关联式容器之set、map、multiset和multimap
- STL源码剖析-关联式容器之set,map,multiset和multimap
- map、multimap、set、multiset容器
- 5 关联式容器-set map multiset multimap
- C++:关联容器(set,multiset,map,multimap)
- 数据结构 P46-47 算法实现 顺序栈的基本操作
- JSP 页面中用相对路径显示图片
- C++ : Memory model in c++11
- Azure 虚拟机诊断设置问题排查
- native和static native区别
- STL关联容器MAP、SET与multimap、multiset与hashmap、hashset的区别
- Python字符串初入门
- vim使用--鸟哥私房菜读书笔记
- linux 消息队列查看和删除
- maven项目update project后tomcat启动报错
- 管理者及其工作
- 单例设计模式
- java后端验证 bean validation 框架
- Android扫一扫(Zxing),闪光灯,生成二维码图片,解析二维码(条码)等