赞
踩
参考:
https://blog.csdn.net/yousss/article/details/79540690 详解STL中的map和hash_map区别
https://blog.csdn.net/fsfsfsdfsdfdr/article/details/82697289 STL hashmap原理及冲突解决
https://my.oschina.net/biezhi/blog/485725 HashMap的实现原理
https://caiwb1990.iteye.com/blog/2070615 C++ Map小结
一、区别
1.底层实现不同(存储结构的差异)
map:红黑树
hash_map:散列表
2.构造函数不同
map:只需要比较函数
hash_map:需要hash函数
二、使用
map:
hash_map:
三、选择
主要基于三点:查找速度、数据量和内存情况
map:查找时间复杂度为O(logn)
hash_map:查找时间复杂度为O(1),在数据量大的时候效果明显,但其用空间换时间的做法,要考虑内存情况。
四、冲突解决
map:
hash_map:链地址法最常用,另有开放寻址法(线性探测、二次探测和二次哈希)等。
五、底层原理实现
六、其他
Hash_map的默认哈希函数实际上有多个,是根据传入的类型来选择的,体现了泛型编程。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。