问题描述
||
这个问题已经在这里有了答案:
解决方法
map
通常使用红黑树来实现。
元素已排序。
内存使用量相对较小(哈希表不需要额外的内存)。
相对快速的查找:O(log N)。
unordered_map
通常使用哈希表实现。
元素未排序。
需要额外的内存来保存哈希表。
快速查找O(1),但恒定时间取决于散列函数,散列函数可能相对较慢。另外请记住,您可能会遇到生日问题。
, 比较哈希表(undorded_map
)与二叉树(map
),记住您的CS类并进行相应调整。
哈希映射通常在查询中具有O(1),该映射具有O(logN)。如果您需要许多快速查找,那可能是一个真正的区别。
映射会保留元素的顺序,有时也很有用。
, map
允许以排序的方式遍历元素,而unordered_map
不允许。
因此,当您需要按排序顺序遍历地图中的各个项目时,请使用ѭ6。
, 选择一个而不是另一个的原因是性能。否则,他们只会创建std::map
,因为它可以为您做更多的事情:)
需要自动排序元素时,请使用ѭ6。其他时间使用std::unordered_map
。
请参阅SGI STL复杂性规范的基本原理。
, unordered_map
是O(1),但查找,插入和删除的常量开销很高。 map
是O(log(n)),因此请选择最适合您需要的复杂度。此外,并非所有键都可以放置在两种地图中。