0

私は持っていmap<int, string>ます。キーはクライアント ノードを参照します。

マップをトラバースし、各キーをマップ内に保持されている他のすべてのキーとブール関数 (ノードが接続されているかどうかを確認します) と比較する必要があります。

つまり、次のようなことを行う最良の方法は何ですか

map<int, string> test_map;
map<int, string>::iterator iter;

for (iter = test_map.begin(); iter!=test_map.end(); iter++)
{
    int curr_node = iter->first;

    /* psuedo-code:
    1. iterate through other keys
    2. check against boolean e.g. bool fn1(curr_node, test_node) returns true if nodes are connected
    3. perform fn2 if true */

}

ノード内の他のキーを使用して反復部分を実行する方法がわかりません-事前に感謝します。

4

2 に答える 2

1

一歩下がって、ここで少し異なるデータ構造を使用した方がよいのではないでしょうか?

少なくとも、あなたが求めているこのタスクについては、隣接リストまたはマトリックスの方がうまくいくかもしれません。

要点は、ノード中心ではなく、エッジ中心のデータ構造を持つことです。fn2これにより、接続されたノードのすべてのペアを呼び出すという指定されたタスクが非常に簡単になります。

このアプローチがあなたの要件を考慮して理にかなっているかどうかお知らせください。詳細や参考文献を喜んで含めます。

于 2013-06-06T03:07:55.730 に答える