在普通键的情况下使用map over unordered_map有什么好处吗?
最近unordered_map
在C ++中的讨论使我意识到我应该使用之前使用unordered_map
的大多数情况map
,因为查找的效率(摊销的O(1)与O(log n))。大多数时候我使用地图,我使用int
或std::string
作为密钥类型; 因此,我对哈希函数的定义没有任何问题。我想过这个问题越多,我越才明白,我找不到任何理由使用的std::map
在std::unordered_map
与简单类型的键的情况下-我看了一下界面,并没有发现任何影响我的代码的重大差异。
因此,问题:是否有使用任何真正的原因std::map
在std::unordered map
简单类型等的情况下int
和std::string
?
我从一个严格的编程角度问我 - 我知道它没有被完全认为是标准的,并且它可能会带来移植问题。
另外,我希望其中一个正确的答案可能是“它对于较小的数据集更有效”,因为开销较小(是真的吗?) - 因此我想将问题限制在数量较多的情况下键是非平凡的(> 1 024)。
编辑: 呃,我忘记了显而易见的(感谢GMan!) - 是的,地图是当然有序的 - 我知道,我正在寻找其他原因。
Cats萌萌