最近一次有关unordered_map
C ++的讨论使我意识到,由于查找效率高(摊销O(1)与O(log n)),我应该unordered_map
在map
以前使用过的大多数情况下使用。大多数情况下,我使用地图,或者使用或作为密钥类型。因此,我对散列函数的定义没有任何问题。我想得越多,就越发意识到,对于简单类型的键,我找不到使用over的任何原因-我看了一下接口,却没有发现任何原因会影响我的代码的重大差异。int
std::string
std::map
std::unordered_map
因此,问题:是否有使用任何真正的原因std::map
在std::unordered_map
简单类型等的情况下int
和std::string
?
我是从严格的编程角度询问的-我知道它还没有完全被认为是标准的,并且可能会带来移植方面的问题。
另外,我希望正确的答案之一可能是“由于开销较小(对于较小的数据集,效率更高)”(是吗?),因此,我想将问题限制在以下情况:键是不平凡的(> 1,024)。
编辑: h,我忘了明显的东西(感谢GMan!)-是的,当然,地图是有序的-我知道,并且正在寻找其他原因。