簡體   English   中英

將boost :: depth_first_search與Visitor一起使用

[英]Using boost::depth_first_search with Visitor

正如標題所示,我正在使用boost::depth_first_search並使用Visitor(繼承自boost::default_dfs_visitor )來實現某些算法。

但是,在算法運行期間,我想在訪問者中保存一些信息,以后再查詢。 但是,在DFS完成后,信息將被刪除,因此我假設它使用了副本。 除了為所有私有變量使用指針之外,有沒有辦法防止這種情況並使boost使用我的副本?

您可以嘗試傳遞包含在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)返回一個boost::reference_wrapper<YourVisitorClass> depth_first_search創建該參數的副本時,它將復制reference_wrapper而不是visitor對象。 引用的副本將引用與原始相同的實例。

信息是訪客的一部分真的有意義嗎?

我的猜測是信息在邏輯上屬於圖形,應存儲在那里,而不是存儲在訪問者中。

您可以在訪問者中存儲對圖表的引用。 然后,當訪問者遍歷圖表時,它可以更新與圖表一起存儲的信息。

結果是,當工作完成時,可以銷毀訪問者,因為結果將作為圖形的一部分保留。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM