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