我发现 VS2005 上的标准散列函数在尝试实现高性能查找时非常缓慢。有哪些快速高效的散列算法可以避免大多数冲突的好例子?
最佳答案
我曾与 Paul Larson 合作过微软研究院的一些哈希表实现。他在各种数据集上研究了许多字符串散列函数,发现简单的乘以 101 和加法循环的效果出奇的好。
unsigned int
hash(
const char* s,
unsigned int seed = 0)
{
unsigned int hash = seed;
while (*s)
{
hash = hash * 101 + *s++;
}
return hash;
}
关于c++ - 使用 hash_map 时,在 STL 字符串上使用的最佳散列算法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/98153/