Search code examples
c++boostdepth-first-searchboost-graph

Using boost::depth_first_search with Visitor


As the title suggests, I'm using boost::depth_first_search and using a Visitor (inheriting from boost::default_dfs_visitor) to implement some algorithm.

However, during the algorithm's run, I want to save some information in the visitor, to be queried later. However, the information is erased after the DFS is done, so I assume it uses a copy. Other than just using pointers for all private variables, is there a way to prevent this and make boost use my copy?


Solution

  • Does it really make sense that the information is part of the visitor?

    My guess is that the information logically belongs with the graph, and should be stored there, not in the visitor.

    You can store a reference to the graph in the visitor. Then, as the visitor traverses the graph, it can update the information that is stored with the graph.

    The result is that it is OK to destroy the visitor when its work is done, because the results will persist as part of the graph.