首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++中无序映射的关键搜索时间是多少?

C++中无序映射的关键搜索时间是多少?
EN

Stack Overflow用户
提问于 2020-04-29 16:53:32
回答 1查看 55关注 0票数 1

我有一些二维数组,每个二维数组都有一些相应值。我将这些2D数组转换成字符串,然后这些字符串被用作“键”,2D数组的相应值被用作无序映射中的“值”。

二维数组到字符串的转换过程(带示例):

A3 = {(1,2,3),(4,5,6),(7,8,9)}

对应的字符串为: 1+2+3 * 4+5+6 * 7+8+9

那么,无序映射在内部使用的哈希表中的键搜索时间是多少?

EN

回答 1

Stack Overflow用户

发布于 2020-05-10 14:28:06

如果您的密钥是一个std::string,那么对字符串进行散列会有一定的时间复杂性。微软的Visual C++标准库在散列方面做得非常糟糕,但它的散列时间为O(1) (仅将沿字符串均匀分布的10个字符合并到散列值中)。GNU是另一个极端,它使用了一个非常好的散列函数,它的密钥长度是O(K)。

那么您所说的散列表“键搜索时间”将相对于表中元素的数量摊销为O(1),但是如果其他字符串已经散列到相同的存储桶中,则需要对它们进行比较:如果长度不同,则每个比较将为O(1),或者如果找到键或与现有键的初始子字符串匹配,则为O(K)。

这真的是常识-人们困惑的地方是试图为整个操作赋予一个大O值:在这种情况下,它是O(K),因为这是所有涉及到的操作中最复杂的。

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

https://stackoverflow.com/questions/61497808

复制
相关文章

相似问题

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