C++ c关于哈希表的问题

C++ c关于哈希表的问题,c++,hashtable,C++,Hashtable,以下是预处理哈希表的一些代码: unsigned long cryptTable[0x500]; void StringHash::InitCryptTable() { unsigned long seed = 0x00100001, index1 = 0, index2 = 0, i; for( index1 = 0; index1 < 0x100; index1++ ) { for( index2 = index1, i = 0;

以下是预处理哈希表的一些代码:

unsigned long cryptTable[0x500];
void StringHash::InitCryptTable() 
{  
    unsigned long seed = 0x00100001, index1 = 0, index2 = 0, i; 

    for( index1 = 0; index1 < 0x100; index1++ ) 
    {  
        for( index2 = index1, i = 0; i < 5; i++, index2 += 0x100 ) 
        {  
            unsigned long temp1, temp2; 
            seed = (seed * 125 + 3) % 0x2AAAAB; 
            temp1 = (seed & 0xFFFF) << 0x10; 
            seed = (seed * 125 + 3) % 0x2AAAAB; 
            temp2 = (seed & 0xFFFF); 
            cryptTable[index2] = ( temp1 | temp2 );  
        }  
    }  
} 
无符号长加密表[0x500];
void StringHash::InitCryptTable()
{  
无符号长种子=0x00100001,index1=0,index2=0,i;
对于(index1=0;index1<0x100;index1++)
{  
对于(index2=index1,i=0;i<5;i++,index2+=0x100)
{  
无符号长temp1、temp2;
种子=(种子*125+3)%0x2aaab;

temp1=(seed&0xFFFF)在这部分代码中有多个方面。首先,您应该大致了解密码和随机生成器

  • 0x00100001-与任何其他类型一样好
  • 0x2aaab=2796203是素数,迭代seed=(seed*125+3)%0x2aaab将给出0…2796202之间的伪随机数字序列
  • seed&0xFFFF将为您提供16位伪随机数
根据第二部分-这取决于它在哪里使用