Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Data structures 在C+中,无序映射的关键搜索时间是什么+;STL?_Data Structures_Time Complexity_Hashtable_Unordered Map - Fatal编程技术网

Data structures 在C+中,无序映射的关键搜索时间是什么+;STL?

Data structures 在C+中,无序映射的关键搜索时间是什么+;STL?,data-structures,time-complexity,hashtable,unordered-map,Data Structures,Time Complexity,Hashtable,Unordered Map,我有一些2D数组,每个2D数组都有一些对应的值。我将这些2D数组转换为字符串,然后这些字符串被用作“键”,2D数组的相应值被用作无序映射中的“值” 二维数组到字符串的转换过程(附示例): A[3][3]={(1,2,3)、(4,5,6)、(7,8,9)} 对应的字符串为:1+2+3*4+5+6*7+8+9 那么无序映射内部使用的哈希表中的键搜索时间是多少 如果您的密钥是std::string,则对字符串进行哈希运算会有一定的时间复杂性。微软的Visual C++标准库做了一个非常糟糕的哈希工作,

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

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

A[3][3]={(1,2,3)、(4,5,6)、(7,8,9)}

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


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

如果您的密钥是
std::string
,则对字符串进行哈希运算会有一定的时间复杂性。微软的Visual C++标准库做了一个非常糟糕的哈希工作,但是它在恒定时间O(1)中(仅将10个字符沿字符串均匀地间隔成哈希值)。GNU是另一个极端,使用了一个非常好的哈希函数,它的密钥长度为O(K)

然后,您称之为“键搜索时间”的哈希表将根据表中元素的数量摊销O(1),但如果其他字符串已哈希到同一个存储桶,则需要对其进行比较:如果长度不同,则每个比较都将是O(1),或多达O(K)如果找到密钥或与现有密钥的初始子字符串匹配

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