为什么哈希函数返回size_t,如何使用它?
|
我了解哈希表的数学基础。我在下面有一个哈希函数(在某个地方找到):
/* Fowler / Noll / Vo (FNV) Hash */
static const size_t InitialFNV = 2166136261U;
static const size_t FNVMultiple = 16777619;
size_t myhash(const string &s, int length)
{
size_t hash = InitialFNV;
for(size_t i = 0; i < length; i++)
{
//XOR the lower 8 bits
hash = hash ^ (s[i]);
//Multiply by the multiple
hash = hash * FNVMultiple;
}
return hash;
}
为什么返回“ 1”?
一个人怎么用这个写一个
store()
功能
哈希表中的字符串?
如何适应数组
字符?
关于#3,是否适合替换
for
循环和while
循环
以“ 5”字符结尾?
仅供参考,我正在学习第二份工作面试,这就是为什么我要问。
没有找到相关结果
已邀请:
3 个回复
览幕堤分
,因为那是本地整数(也是最快的)。为什么还要选择其他东西? \“桌子\”?哪张桌子如果您指的是哈希表,则可以使用返回值选择一个随机存储桶以将对象放入其中。(提示:认为\“ remainder \”。) 它是否已经适合数组? 如果它是一个以空值结尾的字符串,为什么不呢?
僻朵庙惩竣
表示C ++,而不是C。这在编译时可能很重要。
淘圃跺枯替
具有它自己的长度,您不需要传递它。这是C ++,而不是C-在C中没有引用。不需要
或类似的东西,或
终止符或其他任何形式。这意味着用一个寻找while12ѭ的while循环替换它会是Bad™,因为不能保证
甚至有一个,更不用说它是终止符了。