посоветуйте хеш-функцию от указателя
От: pepsicoca  
Дата: 01.02.13 13:25
Оценка:
Добрый день.

Есть структуры, которые нужно хранить в хэш-таблице.
При этом ключ хэш-таблицы это указатель (пусть для простоты будет указатель void*).

Посоветуйте, какую хеш-функцию лучше взять, чтобы было быстро и переносимо.

Пока что сделал что-то вроде этого:


typedef int hashtablelength;

hashtablelength hashfun(void* ptr){

hashtablelength hashvalue=0;

char* ptr1=(char*)(&ptr);

size_t l=sizeof(void*);
size_t i;

for(i=0;i!=l;++i){
hashvalue+=(hashtablelength)(ptr1[i]);
}//for

return hashvalue;
}


Вопросы:

1. Как у этого решения с переносимостью с точки зрения выравнивания данных.
2. Как у этого решения с переносимостью с точки зрения использования этого решения на экзотических платформах типа Гарвардской архитектуры, когда указатели разные для разных типов памяти?
3. Хотелось бы хэш-функцию без цикла, чтобы побыстрее было. Что можно предложить?

Спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.