未知のノード順序でグラフをベクトルに格納する最良の方法は何ですか?例えば、私はノードが35,23,89,200,12,89,569などのような未知の順序で来るようにしています...私は、メモリが無駄にならず、ノードが効率的にアクセスされるような方法でそれらを格納したいそれは素晴らしいでしょう。いくつかのハッシュ関数が動作するかもしれませんが、ノードを区別できるものがあれば教えてください。私が考える未知のノード順序のグラフを格納する
おかげ
未知のノード順序でグラフをベクトルに格納する最良の方法は何ですか?例えば、私はノードが35,23,89,200,12,89,569などのような未知の順序で来るようにしています...私は、メモリが無駄にならず、ノードが効率的にアクセスされるような方法でそれらを格納したいそれは素晴らしいでしょう。いくつかのハッシュ関数が動作するかもしれませんが、ノードを区別できるものがあれば教えてください。私が考える未知のノード順序のグラフを格納する
おかげ
最も簡単な解決策は、単に順番にあなたのベクトルにそれらを挿入し、そのインデックスにそれらの値からマッピングするためにmap<int,int>
を作成しています。あなたの例で
:今
map[35] == 0
ma[[23] == 1
map[89] == 2
map[200] == 3
map[12] == 4
...
は、ノードへのアクセスi
vector[map[i]]
としてEDIT:
第二の可能性は、要素を保持するset
代わりvector
のを使用することであろうが、それは必ずしも望ましくないかもしれません。[セットには重複がなく、あなたがそれらを挿入した順序で要素を含みません]が、それがあなたに合っているかどうかを検討してください。
なぜノード・クラス/構造体に直接インデックスからマップを使用しないのですか?マップも内部的にバイナリツリーとして実装されているので、おそらくブーストのようなハッシュマップを使うほうが良いでしょう。 – WeaselFox
数字は何を表していますか?ノードには整数だけが含まれていますか? – WeaselFox
これらはノード番号ノード#35、そのようなノード#200のようなものです –