什么时候应该使用unordered_map而不是std :: map [duplicate]

问题描述

||                                                                                                                   这个问题已经在这里有了答案:                                                      

解决方法

        
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)),因此请选择最适合您需要的复杂度。此外,并非所有键都可以放置在两种地图中。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...