我想知道在哪种情况下我应该使用unordered_map而不是std :: map。
每次我不注意地图中元素的顺序时,我必须使用unorderd_map吗?
答案 0 :(得分:18)
map
unordered_map
答案 1 :(得分:1)
比较哈希表(undorded_map
)与二叉树(map
),记住你的CS类并相应调整。
哈希映射在查找时通常有O(1),映射有O(logN)。如果您需要许多快速查找,这可能是一个真正的区别。
地图保持元素的顺序,有时也很有用。
答案 2 :(得分:0)
map
允许以排序方式迭代元素,但unordered_map
不会。
因此,当您需要按排序顺序迭代地图中的项目时,请使用std::map
。
答案 3 :(得分:0)
你选择一个而不是另一个的原因是性能。否则他们只创建了std::map
,因为它为你做了更多:)
当您需要自动排序元素时,请使用std::map
。其他时间使用std::unordered_map
。
答案 4 :(得分:0)
unordered_map
是O(1)但是查找,插入和删除的常量开销很高。 map
是O(log(n)),因此选择最适合您需求的复杂性。此外,并非所有键都可以放入两种地图中。