2012-01-25 17 views
1

未知のノード順序でグラフをベクトルに格納する最良の方法は何ですか?例えば、私はノードが35,23,89,200,12,89,569などのような未知の順序で来るようにしています...私は、メモリが無駄にならず、ノードが効率的にアクセスされるような方法でそれらを格納したいそれは素晴らしいでしょう。いくつかのハッシュ関数が動作するかもしれませんが、ノードを区別できるものがあれば教えてください。私が考える未知のノード順序のグラフを格納する

おかげ

+0

数字は何を表していますか?ノードには整数だけが含まれていますか? – WeaselFox

+0

これらはノード番号ノード#35、そのようなノード#200のようなものです –

答えて

1

最も簡単な解決策は、単に順番にあなたのベクトルにそれらを挿入し、そのインデックスにそれらの値からマッピングするために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のを使用することであろうが、それは必ずしも望ましくないかもしれません。[セットには重複がなく、あなたがそれらを挿入した順序で要素を含みません]が、それがあなたに合っているかどうかを検討してください。

+0

なぜノード・クラス/構造体に直接インデックスからマップを使用しないのですか?マップも内部的にバイナリツリーとして実装されているので、おそらくブーストのようなハッシュマップを使うほうが良いでしょう。 – WeaselFox

関連する問題