获取适当的哈希索引C++

use*_*120 0 c++

我已经尝试了一切.即使是java的论坛:

java.lang.String.hashCode():

s[0]*(31^(n-1)) + s[1]*(31^(n-2)) + ... + s[n-1]
Run Code Online (Sandbox Code Playgroud)

我把它解释为一个总和:虽然我不太清楚如何处理s [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;
}
Run Code Online (Sandbox Code Playgroud)

其中maxSize是我的固定数组大小为11的第10个元素.

我究竟做错了什么?我的一些哈希指标出错了.其他人,正确.为什么是这样?到目前为止,每个人都喜欢,"谁在乎它的运作方式!使用模板!" 好吧,我想明白这个..

Nic*_*kis 7

s[0](31^(n-1)) + s[1](31^(n-2)) + ... + s[n-1]
Run Code Online (Sandbox Code Playgroud)

在公式中^表示取幂,而不是按位xor运算.
看看这个问题.