首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在std::map和std::unordered_map之间选择

在std::map和std::unordered_map之间选择
EN

Stack Overflow用户
提问于 2010-10-11 07:29:27
回答 2查看 92.9K关注 0票数 138

既然stdunordered_map中有了一个真正的哈希图,为什么(或者什么时候)我还想在实际存在的系统上使用老的map而不是unordered_map呢?有没有什么明显的情况是我不能立即看到的?

EN

回答 2

Stack Overflow用户

发布于 2010-10-11 07:32:06

我认为很明显,您将使用按排序顺序遍历映射中的项所需的std::map

当您更喜欢编写比较运算符(这是直观的)而不是哈希函数(通常非常不直观)时,也可以使用它。

票数 22
EN

Stack Overflow用户

发布于 2016-08-20 04:22:46

假设你有非常大的键,也许是很大的字符串。要为大字符串创建散列值,您需要从头到尾遍历整个字符串。它将花费至少线性时间到密钥的长度。但是,当您仅使用键的>运算符搜索二叉树时,当发现第一个不匹配时,每个字符串比较都会返回。对于大型字符串,这通常是非常早的。

这一推理可应用于std::unordered_mapstd::mapfind函数。如果键的性质使得生成散列(在std::unordered_map中)所需的时间比使用二进制搜索(在std::map中)查找元素的位置所需的时间更长,那么在std::map中查找键应该更快。很容易想到这种情况,但我认为在实践中很少见。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3902644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档