Хеш-функция в c ++ для строки в int - PullRequest
5 голосов
/ 20 декабря 2011

Я ищу хэш-функцию в c ++ для хеширования строки в int.Я использовал CMapStringToPtr, но у него есть функция с именем «GetNextAssoc», которая позволяет извлекать ключ как строку, что означает, что строка должна быть сохранена, и она получает столько памяти.Есть ли другая хеш-функция, которая получает меньше памяти и не сохраняет строку?

Ответы [ 2 ]

10 голосов
/ 20 декабря 2011

C ++ имеет встроенную хеш-функцию для этой цели - она ​​используется для всех хеш-контейнеров STL.

std::hash

PS: вы можете сделать свой собственныйКроме того, просто передайте строку по константной ссылке и поочередно просматривайте ее символы, добавляя их к целому числу, затем модифицируйте по некоторому значению:)

2 голосов
/ 20 декабря 2011
 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;
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...