我有一个自定义结构,包含12个整数值,x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6。
数字的范围在1到5之间,并且每个结构都保证具有不同的组合,即 NO 两个结构可以具有x1,y1,x2,y2,x3的所有值, y3,x4,y4,x5,y5,x6,y6与其他值相同。
我需要一个好的哈希函数来执行O(1)操作。
要求是找出具有特定x1,y1 ...... x6,y6值的结构
现在我正在使用以下内容: -
struct Hash_6
{
size_t operator () ( const Node& n ) const
{
int result=17;
result=31*result+n.x1;
result=31*result+n.x2;
result=31*result+n.x3;
result=31*result+n.x4;
result=31*result+n.x5;
result=31*result+n.x6;
result=31*result+n.y1;
result=31*result+n.y2;
result=31*result+n.y3;
result=31*result+n.y4;
result=31*result+n.y5;
result=31*result+n.y6;
return result;
}
};
我想知道是否有更好的更有效的哈希函数,我可以用于这个特定的情况。