首页 > 试题广场 >

下面给出的散列函数并不总能考虑到关键码表示的全部内容。什么时

[问答题]
下面给出的散列函数并不总能考虑到关键码表示的全部内容。什么时候表示中的一些部分会被忽略?写出一个散列函数,使它总能考虑关键码表示的全部内容。给出一个例子,说明在什么时候忽略关键码中某个部分可能是明智的。写一个散列函数,使它只基于关键码中被认为有关的部分去计算散列值。
template <class T> size_t Hash<T>::operator()(const T& key) const
{
  size_t res = 0;
  size_t len = sizeof(T);
  const char* p = reinterpret_cast<const char*>(&key);  // 将对象作为字节序列去访问
  while (len--) res = (res<<l)^*p++;  //使用表示key的那些字节
  return res;
}

这道题你会答吗?花几分钟告诉大家答案吧!