unsignedintRSHash(conststd::string&str)
{
unsignedintb=378551;
unsignedinta=63689;
unsignedinthash=0;
for(std::size_ti=0;i<str.length();i++)
{
hash=hash*a+str[i];
a=a*b;
}
returnhash;
}
/*EndOfRSHashFunction*/
unsignedintJSHash(conststd::string&str)
{
unsignedinthash=1315423911;
for(std::size_ti=0;i<str.length();i++)
{
hash^=((hash<<5)+str[i]+(hash>>2));
}
returnhash;
}
/*EndOfJSHashFunction*/
unsignedintPJWHash(conststd::string&str)
{
unsignedintBitsInUnsignedInt=(unsignedint)(sizeof(unsignedint)*8);
unsignedintThreeQuarters=(unsignedint)((BitsInUnsignedInt*3)/4);
unsignedintOneEighth=(unsignedint)(BitsInUnsignedInt/8);
unsignedintHighBits=(unsignedint)(0xFFFFFFFF)<<(BitsInUnsignedInt-OneEighth);
unsignedinthash=0;
unsignedinttest=0;
for(std::size_ti=0;i<str.length();i++)
{
hash=(hash<<OneEighth)+str[i];
if((test=hash&HighBits)!=0)
{
hash=((hash^(test>>ThreeQuarters))&(~HighBits));
}
}
returnhash;
}
/*EndOfP.J.WeinbergerHashFunction*/
unsignedintELFHash(conststd::string&str)
{
unsignedinthash=0;
unsignedintx=0;
for(std::size_ti=0;i<str.length();i++)
{
hash=(hash<<4)+str[i];
if((x=hash&0xF0000000L)!=0)
{
hash^=(x>>24);
}
hash&=~x;
}
returnhash;
}
/*EndOfELFHashFunction*/
unsignedintBKDRHash(conststd::string&str)
{
unsignedintseed=131;//31131131313131131313etc..
unsignedinthash=0;
for(std::size_ti=0;i<str.length();i++)
{
hash=(hash*seed)+str[i];
}
returnhash;
}
/*EndOfBKDRHashFunction*/
unsignedintSDBMHash(conststd::string&str)
{
unsignedinthash=0;
for(std::size_ti=0;i<str.length();i++)
{
hash=str[i]+(hash<<6)+(hash<<16)-hash;
}
returnhash;
}
/*EndOfSDBMHashFunction*/
unsignedintDJBHash(conststd::string&str)
{
unsignedinthash=5381;
for(std::size_ti=0;i<str.length();i++)
{
hash=((hash<<5)+hash)+str[i];
}
returnhash;
}
/*EndOfDJBHashFunction*/
unsignedintDEKHash(conststd::string&str)
{
unsignedinthash=static_cast<unsignedint>(str.length());
for(std::size_ti=0;i<str.length();i++)
{
hash=((hash<<5)^(hash>>27))^str[i];
}
returnhash;
}
/*EndOfDEKHashFunction*/
unsignedintBPHash(conststd::string&str)
{
unsignedinthash=0;
for(std::size_ti=0;i<str.length();i++)
{
hash=hash<<7^str[i];
}
returnhash;
}
/*EndOfBPHashFunction*/
unsignedintFNVHash(conststd::string&str)
{
constunsignedintfnv_prime=0x811C9DC5;
unsignedinthash=0;
for(std::size_ti=0;i<str.length();i++)
{
hash*=fnv_prime;
hash^=str[i];
}
returnhash;
}
/*EndOfFNVHashFunction*/
unsignedintAPHash(conststd::string&str)
{
unsignedinthash=0xAAAAAAAA;
for(std::size_ti=0;i<str.length();i++)
{
hash^=((i&1)==0)?((hash<<7)^str[i]*(hash>>3)):
(~((hash<<11)+(str[i]^(hash>>5))));
}
returnhash;
}
{
unsignedintb=378551;
unsignedinta=63689;
unsignedinthash=0;
for(std::size_ti=0;i<str.length();i++)
{
hash=hash*a+str[i];
a=a*b;
}
returnhash;
}
/*EndOfRSHashFunction*/
unsignedintJSHash(conststd::string&str)
{
unsignedinthash=1315423911;
for(std::size_ti=0;i<str.length();i++)
{
hash^=((hash<<5)+str[i]+(hash>>2));
}
returnhash;
}
/*EndOfJSHashFunction*/
unsignedintPJWHash(conststd::string&str)
{
unsignedintBitsInUnsignedInt=(unsignedint)(sizeof(unsignedint)*8);
unsignedintThreeQuarters=(unsignedint)((BitsInUnsignedInt*3)/4);
unsignedintOneEighth=(unsignedint)(BitsInUnsignedInt/8);
unsignedintHighBits=(unsignedint)(0xFFFFFFFF)<<(BitsInUnsignedInt-OneEighth);
unsignedinthash=0;
unsignedinttest=0;
for(std::size_ti=0;i<str.length();i++)
{
hash=(hash<<OneEighth)+str[i];
if((test=hash&HighBits)!=0)
{
hash=((hash^(test>>ThreeQuarters))&(~HighBits));
}
}
returnhash;
}
/*EndOfP.J.WeinbergerHashFunction*/
unsignedintELFHash(conststd::string&str)
{
unsignedinthash=0;
unsignedintx=0;
for(std::size_ti=0;i<str.length();i++)
{
hash=(hash<<4)+str[i];
if((x=hash&0xF0000000L)!=0)
{
hash^=(x>>24);
}
hash&=~x;
}
returnhash;
}
/*EndOfELFHashFunction*/
unsignedintBKDRHash(conststd::string&str)
{
unsignedintseed=131;//31131131313131131313etc..
unsignedinthash=0;
for(std::size_ti=0;i<str.length();i++)
{
hash=(hash*seed)+str[i];
}
returnhash;
}
/*EndOfBKDRHashFunction*/
unsignedintSDBMHash(conststd::string&str)
{
unsignedinthash=0;
for(std::size_ti=0;i<str.length();i++)
{
hash=str[i]+(hash<<6)+(hash<<16)-hash;
}
returnhash;
}
/*EndOfSDBMHashFunction*/
unsignedintDJBHash(conststd::string&str)
{
unsignedinthash=5381;
for(std::size_ti=0;i<str.length();i++)
{
hash=((hash<<5)+hash)+str[i];
}
returnhash;
}
/*EndOfDJBHashFunction*/
unsignedintDEKHash(conststd::string&str)
{
unsignedinthash=static_cast<unsignedint>(str.length());
for(std::size_ti=0;i<str.length();i++)
{
hash=((hash<<5)^(hash>>27))^str[i];
}
returnhash;
}
/*EndOfDEKHashFunction*/
unsignedintBPHash(conststd::string&str)
{
unsignedinthash=0;
for(std::size_ti=0;i<str.length();i++)
{
hash=hash<<7^str[i];
}
returnhash;
}
/*EndOfBPHashFunction*/
unsignedintFNVHash(conststd::string&str)
{
constunsignedintfnv_prime=0x811C9DC5;
unsignedinthash=0;
for(std::size_ti=0;i<str.length();i++)
{
hash*=fnv_prime;
hash^=str[i];
}
returnhash;
}
/*EndOfFNVHashFunction*/
unsignedintAPHash(conststd::string&str)
{
unsignedinthash=0xAAAAAAAA;
for(std::size_ti=0;i<str.length();i++)
{
hash^=((i&1)==0)?((hash<<7)^str[i]*(hash>>3)):
(~((hash<<11)+(str[i]^(hash>>5))));
}
returnhash;
}