Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.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
C++ 数组的哈希表大小_C++_Hash_Hashtable - Fatal编程技术网

C++ 数组的哈希表大小

C++ 数组的哈希表大小,c++,hash,hashtable,C++,Hash,Hashtable,快速提问:为什么哈希表的大小是输入数组的两倍更好?为什么我希望表大小为40(如果我的数组大小为20),而不是更接近甚至20?这取决于冲突方法。如果您有一个完美的散列方法,那么大小为20的数组足以容纳20个键,但在大多数情况下会发生冲突,这意味着它们必须放置在数组中的一个新位置,如果只剩下一个空格,则很难找到该位置。您必须对冲突采取预防措施。假设大小是20。有20个值需要放置。如果哈希函数不适用于数据,并且所有数据都被定向到最后一个点,即20,并且没有适当的滚动度量,则数据将被放入下一个索引,即2

快速提问:为什么哈希表的大小是输入数组的两倍更好?为什么我希望表大小为40(如果我的数组大小为20),而不是更接近甚至20?

这取决于冲突方法。如果您有一个完美的散列方法,那么大小为20的数组足以容纳20个键,但在大多数情况下会发生冲突,这意味着它们必须放置在数组中的一个新位置,如果只剩下一个空格,则很难找到该位置。

您必须对冲突采取预防措施。假设大小是20。有20个值需要放置。如果哈希函数不适用于数据,并且所有数据都被定向到最后一个点,即20,并且没有适当的滚动度量,则数据将被放入下一个索引,即21。如果将所有20个数据映射到最后一个索引,则还需要20个位置。因此,对于数据n的大小,最好是哈希表2n的大小

您正在寻找的艺术术语是。50%的负载系数处于低侧;负载大约80%是一个更典型的目标。