STL中hashtable,hashset,hashmap,set,map,multiset和multimap的区别
来源:互联网 发布:淘宝卖教程选什么类目 编辑:程序博客网 时间:2024/06/05 07:39
hashtable 可以提供任何有名项的存取操作和删除操作,由于操作对象是有名项,故可被视为一种字典结构。用意是在常数时间内提供基本操作。常见的,我们可以把int存到相应值的数组里面,就可以通过O(1)的时间存取和删除。主要思想是通过hash函数,把对象映射到一个较小的容器里面,并且保证时间复杂度。映射到较小容器很可能出现碰撞问题,解决的方法常见的有:线性探测,二次探测,开链法。STL利用vector来当容器,采用开链法来解决冲突,从而实现hashtable.hashtable只能处理char,int,short等类型,不能处理string,double,float类型,想要处理的话必须自己加hash function.
hashset重点在于set几个字母上,主要实现集合功能,只不过底层函数由hashtable提供,而set是由红黑树作底层,两者的唯一区别就是set默认是排好序的,而hashset不是。
hashmap重点在于map几个字母上,主要提供对象间的一一映射功能,hashmap底层由hashtable提供,而map底层由红黑树提供,区别同上。
总结:加有hash几个字的一些结构,底层都是由hashtable来提供的,不加的都是由红黑树来提供
至于set和multiset的区别就是后者允许键值重复,map和multimap也一样。实现时通过insert_equal()和insert_unique)来控制。
http://blog.csdn.net/wangyuquanliuli/article/details/13744229
0 0
- 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关联容器MAP、SET与multimap、multiset与hashmap、hashset的区别
- STL中map,multimap,hashmap的区别。
- C++STL中,map/multimap,set/multiset 和vector的排序
- 【STL】STL中红黑树的应用set、multiset、map、multimap
- STL总结之set/multiset和map/multimap
- STL模板总结归纳(set,multiset和map,multimap)
- STL — 从源码层面区别map set和multiset multimap
- Map HashMap HashTable Set HashSet
- STL map, multimap, set, multiset 函数介绍
- STL容器 set、 multiset、map、multimap
- C++ STL之 map\set\multimap\multiset
- STL中map,multimap,set,multiset,unordered_map,unordered_multimap,unordered_set,unordered_multiset的实现方法
- STL中map,multimap,set,multiset,unordered_map,unordered_multimap,unordered_set,unordered_multiset的实现方
- Java中Map与HashMap,Hashtable,HashSet的区别
- 新年第一个flag
- php写的可以在本机发送iOS push程序
- 808 协议的解析
- CentOS 6.X 关闭不需要的 TTY 方法
- Meteor:关闭所有tab时退出登录
- STL中hashtable,hashset,hashmap,set,map,multiset和multimap的区别
- 从头认识java-16.5 nio的数据转换
- 绑定服务的初步解读
- logback学习
- Undefined symbols for architecture armv7问题
- Word自动目录字体过大,如何全选并修改样式
- 结构体初始化
- php模块memcache和memcached区别分析
- 离散--繁琐的定义