非基本類型的哈希是如何實現(xiàn)的?
其實也簡單,說到底都是轉換成整數(shù)了。這種算法就是hash算法。
舉個常見的字符串hash算法,DJB算法:
unsigned long hash(unsigned char *str) {
unsigned long hash = 5381;
int c;
while (c = *str++)
hash = ((hash << 5) + hash) + c;
return hash;
}
當然這種算法是可能產生沖突的,沖突一般是通過鏈表處理的。好的hash算法盡量會將不同的字符串在取值范圍內均勻分布。
當然結構體hash化也是類似的,可以自己定義一個hash算法,也并不困難。