我正在阅读有关c ++ multimap
的内容,并指出multimap
允许插入重复的密钥。这使我认为multimap
使用hashmap
进行实施(因为一个hashmap允许重复碰撞)然后我还读到unordered map
使用hash map
。我的问题是两者之间的区别。我试着寻找两者之间的比较,但我找不到任何可以解释这一点的东西。
答案 0 :(得分:4)
哈希表允许并解决哈希值的冲突。它只存储每个键值的一个副本(由operator==
或其他相等关系确定)。但是如果两个不同的键散列到相同的值(绑定发生),则 通过冲突解决来处理。对于每个键,只有一个值。
multimap是一种ADT,它将多个值与每个键而不是一个键相关联。它不是一个特定的实现策略:它可以在内部使用哈希表,搜索树或完全不同的东西。