C++ 散列函数

C++ 散列函数,c++,C++,编写哈希表时,为整数计算哈希键的最佳方法是什么。我正在考虑编写int hashkey=key%arraysize 根据我的研究,我上面的例子应该只在素数数组大小上进行。是的,你应该选择一个素数作为数组大小,并使用值%arraysize作为散列键。使用std散列。这样更好 std::size_t myHash = std::cout << std::hash<int>{}(myInt); std::size\t myHash=std::cout取决于int将包含的值的范围

编写哈希表时,为整数计算哈希键的最佳方法是什么。我正在考虑编写
int hashkey=key%arraysize

根据我的研究,我上面的例子应该只在素数数组大小上进行。

是的,你应该选择一个素数作为数组大小,并使用值%arraysize作为散列键。

使用std散列。这样更好

std::size_t myHash = std::cout << std::hash<int>{}(myInt);

std::size\t myHash=std::cout取决于int将包含的值的范围。在一般情况下,在模运算之前乘以一个较大的奇数将提供足够的扩展。@奥利:我们这里有一个素数巫术的例子。我不能提供一个完美的理由,但GCC的哈希表就是这样做的。也许GCC用一个subobtimal hashfunction(如elf)对字符串进行哈希素数对于二次探测哈希表IIRC有优势,但对于一般的哈希表没有优势。但是我希望数组的大小是任意数。