有什么东西hashmap可以做但地图不能吗?

时间:2010-03-30 00:20:09

标签: c++ data-structures map hashmap unordered-map

我只知道hashmap和map之间的区别在于hashmap是用hash函数实现的,但map是用tree实现的。任何身体可以添加更多吗?

基于此,有没有hashmap可以做的事情但是地图不能?

3 个答案:

答案 0 :(得分:10)

  • Hashmaps的平均情况下访问性能更好(O(1)),但最差情况下性能更差(O(n))。地图总是O(lg(n))。

  • 地图按其键排序,哈希图不是。

  • Hashmaps通常比地图使用更多内存。

  • 地图通常允许更快的迭代。

  • 良好的哈希函数比良好的排序函数更难编写(并且更难分析)。

我不相信hashmap可以做任何地图不能做的事情。

答案 1 :(得分:3)

地图要求密钥具有严格的弱排序,这可能不存在。 hashmap只需要一个哈希函数。因此,通过这种方式,散列映射可以与没有严格弱排序的键一起使用。

答案 2 :(得分:0)

hashmaps对树的一个优点是,在多线程环境中,您不必锁定整个容器来添加或删除单个键 - 锁定哈希表中的单个相关条目(几乎足够了。

几乎是因为可能有元数据(例如,散列表中的项目数)要更新。当然,你可能需要锁定整个表来增长或缩小它。