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に適用します。
これはいい考えですか?そして、どのようにして、与えられたメモリ位置のANY TYPEのオブジェクトからビットを取ることができますか?
ありがとうございます!
これはすべて真です。 – StilesCrisis