このデータをカプセル化するオブジェクトのハッシュを (符号なし 32 ビット整数として) 作成する必要があります。
Entry {
uint8 r;
uint8 g;
uint8 b;
bool empty;
uint8 count;
}
インスタンスが等しい場合を除き、ハッシュはすべてのインスタンスで一意である必要があります。2 つのインスタンスが等しいのは、次の場合のみです。
- count は両方のインスタンスで等しい
と
- r、g、bが等しいか、両方のインスタンスで空が設定されています
ハッシュはハッシュマップやその他のコンテナーで使用されるため、非常に頻繁に呼び出される可能性があります。ハッシュ生成は高速である必要があります。
私は CCCERRRGGGBBB について考えました。
- CCC/RRR/GGG/BBB: 3 桁で count/r/g/b
- E: 空が設定されている場合は 1、そうでない場合は 0
しかし、その数は範囲をはるかに超えています。
何かご意見は?