我試過了一切。即使是Java的forumla:獲取合適的哈希索引C++
java.lang.String.hashCode():
s[0]*(31^(n-1)) + s[1]*(31^(n-2)) + ... + s[n-1]
我interpretted這是一筆: 雖然我不太清楚如何處理就做[N- 1];
int hashmap::hashstr(const char*const str)
{
int result = 0;
int i = 0;
int j = 0;
int k = 0;
unsigned n = 0;
for (; str[n] != NULL; ++n); // how many characters?
while (j != n) // no more characters
{
result += str[i] * (31^(n - k));
j++;
i++;
k++;
}
return result % maxSize;
}
其中最大範圍是在11
什麼我做錯了我的固定陣列尺寸10號元素?我的一些散列標記出錯了。其他人,正確。爲什麼是這樣?到目前爲止,每個人都喜歡,「誰在乎它是如何工作的!使用模板!」好吧,我想了解這個..
我想你需要學習一些更基本的東西,例如在嘗試hashmaps之前使用strlen()。 – 2009-10-01 06:20:07
當你說索引是「錯誤的」或「正確的」時,你能解釋一下嗎?任何散列函數都適用,但有些效率不高。沒有「錯誤」或「正確」。你在比較你的實現與Java? – user172818 2009-10-01 19:38:26