1

ノードの順序が不明なグラフをベクトルに格納するための最良の方法は何ですか。たとえば、35、23、89、200、12、89、569 などのような未知の順序でノードが来ることがあります。メモリが無駄にならないようにそれらを保存し、一定時間であればノードに効率的にアクセスできるようにしたいと考えています。それは素晴らしいでしょう。いくつかのハッシュ関数が機能する可能性がありますが、ノードを区別できるものがあれば教えてください。または、そのための他のアプローチがあるかどうかを教えてください。

ありがとう

4

1 に答える 1

1

私が考える最も簡単な解決策は、それらをベクターに順番に挿入し、map<int,int>それらの値からインデックスにマップする を作成することです。

あなたの例では:

map[35] == 0
ma[[23] == 1
map[89] == 2
map[200] == 3
map[12] == 4
...

iここで、次のようにノードにアクセスしますvector[map[i]]

EDIT:
2番目の可能性は、要素を保持するset代わりにa を使用することですvectorが、常に望ましいとは限りません[セットには重複がなく、挿入した順序で要素が含まれません]が、それがあなたに合っているかどうかを検討してください.

于 2012-01-25T09:47:36.713 に答える