私は比較的小さい素数にアルファベット文字をハッシュすることに興味があります。たとえば、a->2,b->3, c->5, d->7, ...
です。以来、私は複数の文字のハッシュを乗算/分割しています。C++で比較的小さな素数に1つのcharをハッシュする方法はありますか?
私はstd::hash
を試しましたが、非常に大きな整数にハッシュされ、乗算/除算するとオーバーフローが発生しますが、これを行う簡単な方法はありますか?
私は考えていますが、エラトステネスの篩を使って素数の最初の束を生成し、次にstd::unordered_map
を使用してchar,int
のペアを格納します。 しかし、私のニーズに合った標準ライブラリに用意されているハッシュ関数はありますか?
はい、 'std :: map ' –
@Kyle Khalafあなたが何を意味するか分かりません。どのように '' std :: map''をハッシュ関数として使うのですか? – AspiringMat
私の主な問題は、実際に対応する鍵を生成していることです。各値は、1)比較的小さく、2)プライムでなければなりません。 – AspiringMat