template<class KEY, class VALUE>
unsigned int HashMap<KEY, VALUE>::hashCode(KEY key)
{
unsigned int k = key & 0xffffffff; //error: no match for ‘operator&’ in ‘key & 4294967295u’
k += ~(k<<9);
k ^= (k>>14);
k += (k<<4);
k ^= (k>>10);
return k;
};
正如你所看到的,我试图通过操纵对象中的位来实现hashCode。显然,位操作符不容易应用于用户定义的对象。HashMap的实现:--- hashcode
我想取一些任何类型的对象给定它的内存位置,并按照我的意愿操作这些位。然后,我将重新解释这些位为int并将位运算符应用于int。
这听起来像个好主意吗?我怎样才能从任何类型的对象在给定的内存位置?
非常感谢!
这是全部的事实。 – StilesCrisis 2012-02-12 17:00:45