約100個の非負の32ビット整数のリストを1つの整数に凝縮したいと思います。理想的には、結果の整数は常に一意ですが、比較的まれな衝突はいくつか許容されます。これどうやってするの?
私はパズルソルバーを書いています。私の検索アルゴリズムの一部は、すでに見たパズルの状態を再探索することを避けることです。リストから生成された整数をstatesAlreadySeen
テーブルへのキーとして使用します。現在、キーとして文字列を使用しています。ただし、文字列キーから整数キーに移行すると、パフォーマンスが大幅に向上するmap<,>
ため、切り替えたいと思います。
編集:順序付けられていないマップの提案をありがとう!ただし、実際のハッシュ関数についてはまだ興味があります。IIRCには、基本的なビット操作とxoringを含む単純な関数があります。これを見て、衝突の確率について一般的な理解を得るのは素晴らしいことです。