【问题标题】:Difference between multimap and unordered map多图和无序图的区别
【发布时间】:2014-04-21 03:43:03
【问题描述】:

我正在阅读有关 c++ multimap 的内容,它指出 multimap 允许插入重复的键。这让我认为 multimap 使用 hashmap 进行底层实现(因为哈希图允许在发生冲突时重复)然后我还读到unordered map 使用hash map。那么我的问题是两者之间有什么区别。我试图寻找两者之间的比较,但我找不到任何可以解释这一点的东西。

【问题讨论】:

  • 不要将合同与实施混为一谈。另外,“因为哈希映射允许在发生冲突时重复”是完全错误的:哈希上的冲突,而不是实际的键。
  • @LightnessRacesinOrbit 好吧,冲突解决(它发生的事实)哈希表合同的一部分。具体来说,它是允许散列函数为不相等的键返回相同值的子句。
  • @delnan:我指的是 OP 对基于假定实现的合同的推理。

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


【解决方案1】:

哈希表允许并解决哈希值的冲突。它只存储每个键值的一个副本(由operator== 或另一个相等关系确定)。但是如果两个 distinct 键散列到相同的值(必然会发生),则 that 由冲突解决来处理。每个键都有一个值。

多重映射是一种 ADT,它将 多个 值与每个键而不是一个键相关联。这不是一个特定的实施策略:它可以在内部使用哈希表、搜索树或完全不同的东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-11
    • 2013-06-07
    • 1970-01-01
    • 2014-07-20
    • 2016-11-06
    • 2017-05-16
    相关资源
    最近更新 更多