Я делаю мультипликативную строку с функцией ha sh, и мой for-l oop выдает ошибку. Я пытаюсь перебрать каждый символ в строковом значении, используя его длину.
Ошибка: hashtable.cpp:29:20: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::__cxx11::basic_string<char>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare] for (int i = 0; i < key.length(); i++)
Ха sh Функция:
int HashTable::Hash(string key)
{
int hash = 5381; //initial value
for (int i = 0; i < key.length(); i++) //line that is causing error
{
hash = (hash * 33) + (int)key[i];
}
return hash % size;
}
Есть ли другой способ написать мое условие условие, чтобы избежать этой ошибки?