字符串为int的c ++中的哈希函数

时间:2011-12-19 20:37:27

标签: c++ string hash

我在c ++中寻找哈希函数来将字符串哈希到int。我使用了CMapStringToPtr,但它有一个名为“GetNextAssoc”的函数,它允许将键检索为字符串,这意味着必须存储字符串并且它会获得如此多的内存。 是否有任何其他哈希函数获得更少的内存并且不存储字符串?

2 个答案:

答案 0 :(得分:10)

C ++有一个内置的哈希函数用于此目的 - 它用于所有STL哈希容器。

std::hash

PS:你也可以创建自己的,只需通过const引用传递字符串并逐个循环遍历字符,将它们添加到整数,然后通过某个值修改:)

答案 1 :(得分:2)

 int hash( const string &key, int tableSize) {
   int hashVal = 0;

   for(int i = 0; i<key.length();  i++)
     hashVal = 37*hashVal+key[i];

   hashVal %= tableSize;

   if(hashVal<0)
     hashVal += tableSize;

   return hashVal;
 }