Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 高效滚动散列函数_C++_Hash_Hashcode - Fatal编程技术网

C++ 高效滚动散列函数

C++ 高效滚动散列函数,c++,hash,hashcode,C++,Hash,Hashcode,基于: 我实现了以下功能: for (...) { unsigned long long RollingHash = 0; int k = LineSize - 1; for (size_t j = 0; j < LineSize; ++j) { if (condition) { RollingHash += (Line[j] * pow(257, k)) % MOD; Rol

基于:
我实现了以下功能:

for (...)
{
    unsigned long long RollingHash = 0;
    int k = LineSize - 1;

    for (size_t j = 0; j < LineSize; ++j)
    {
        if (condition)
        {
            RollingHash += (Line[j] * pow(257, k)) % MOD;
            RollingHash %= MOD;
            k -= 1;
        }
    }
}

有什么想法吗?

它似乎效率不高/速度不快。你说的似乎是什么意思?你只是在看它,你认为它很慢,还是你有实际的数字表明它很慢,这是你的瓶颈?@NathanOliver我已经测试过了,但它需要大量的时间。时间效率对我的项目很重要。如果你的项目是关于搜索的,你可以使用Adler-32。它应该更快,但可能会导致更多的冲突。我将存储这些散列并稍后使用。碰撞是个大问题。
unsigned long long  h = (Line[0] * pow(257, Line.size()))%MOD;
old = ((old * 257) + 'h' - h) % MOD;