boost :: depth_first_searchを使用して訪問者を使用します
-
11-10-2019 - |
質問
タイトルが示唆しているように、私は使用しています boost::depth_first_search
訪問者の使用(継承 boost::default_dfs_visitor
)いくつかのアルゴリズムを実装します。
ただし、アルゴリズムの実行中に、訪問者に情報を保存して、後で質問したいと思います。ただし、DFSが完了した後に情報が消去されるため、コピーを使用していると思います。ポインターを使用する以外 すべて プライベート変数、これを防ぎ、ブーストに私のコピーを使用させる方法はありますか?
解決
情報が訪問者の一部であることは本当に理にかなっていますか?
私の推測では、情報は論理的にグラフに属し、訪問者ではなくそこに保存する必要があります。
訪問者にグラフへの参照を保存できます。次に、訪問者がグラフを横断すると、グラフに保存されている情報を更新できます。
その結果、結果がグラフの一部として持続するため、訪問者が作業が完了したときに訪問者を破壊しても問題ありません。
他のヒント
訪問者に包まれた訪問者を渡してみることができます boost::reference_wrapper
.
編集-Teh Codez
YourVisitorClass your_visitor;
boost::depth_first_search(your_graph, boost::ref(your_visitor),
your_color_map);
boost::ref(your_visitor)
返品a boost::reference_wrapper<YourVisitorClass>
. 。いつ depth_first_search
その引数のコピーを作成すると、訪問者オブジェクトの代わりにReference_Wrapperをコピーします。リファレンスのコピーは、オリジナルと同じインスタンスを参照します。
所属していません StackOverflow