C ++で2つ(またはそれ以上)の短いintから一意のIDを生成するための最良の方法は何ですか?グラフ内の頂点を一意に識別しようとしています。頂点にはデータとして2〜4個の短い整数が含まれ、理想的にはIDはそれらのハッシュのようなものになります。スピードや使いやすさよりも携帯性と独自性を優先します。
ここにはたくさんの素晴らしい答えがあります。私は今夜、自分の問題に最も適したものを見つけるためにそれらを試してみます。私がしていることについてもう少し。
グラフは、オーディオファイルからのサンプルのコレクションです。グラフをマルコフ連鎖として使用して、古いファイルから新しいオーディオファイルを生成します。各頂点にはいくつかのサンプルが格納され、別のサンプルを指し、サンプルはすべて短いintであるため、データからIDを生成するのは自然なことのように思われました。それらを長く長いものに組み合わせるのは良いことのように聞こえますが、たぶん0 123のような単純なもので十分generateID
です。一意性を保証するために必要なスペースがどれくらいかわからない場合、各頂点に2つの16ビットサンプルが格納されている場合、2 ^ 32の可能な組み合わせが正しいですか?したがって、各頂点に4つのサンプルが格納されている場合、2 ^ 64の可能な組み合わせがありますか?
ライブラリおよびプラットフォーム固有のソリューションは、この質問にはあまり関係ありません。私のプログラムをコンパイルする可能性のある他の人に、追加のライブラリをダウンロードしたり、OSに合わせてコードを変更したりする必要はありません。