如何解决什么时候应该使用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)),因此请选择最适合您需要的复杂度。此外,并非所有键都可以放置在两种地图中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。