question about breadth_first_search
Dear all,
i want to use the breadth_first_search algorithm to store the visited
nodes e.g. in a list for access in the main function.
Has anyone an idea to handle this?
In my code i print out the visited nodes.
The examples in the Boost User Guide about the visitor concept are
sometimes not so easy to understand.
...
using namespace boost;
template <typename VertexNameMap>
class bfs_name_printer:public default_bfs_visitor {
public:
bfs_name_printer(VertexNameMap n_map) : m_name_map(n_map){}
template
On Jan 5, 2005, at 11:26 AM, Matthias Linkenheil wrote:
Dear all,
i want to use the breadth_first_search algorithm to store the visited nodes e.g. in a list for access in the main function. Has anyone an idea to handle this? In my code i print out the visited nodes.
Create a list for the visited nodes (it will stored vertex_descriptors) and store a reference or pointer to that list in your visitor. Finally, instead of printing the vertex in the discover_vertex method of your visit, do a push_back into your list. Doug
Hi Matthias,
The only thing that's likely to be a little counter intuitive is that
visitors are copied by value. Typically, instantiate your std::list (or
whatever container you decide to use) just prior to instantiating your
visitor and pass a non-const reference into the visitor's constructor.
e.g.
template <typename VertexNameMap> class bfs_name_printer : public
default_bfs_visitor
{
public:
explicit bfs_name_printer(VertexNameMap & _name_map) : name_map(_name_map) {}
private:
VertexNameMap & name_map;
// your visitor methods ...
};
... then
typdef std::list
Dear all,
i want to use the breadth_first_search algorithm to store the visited nodes e.g. in a list for access in the main function. Has anyone an idea to handle this? In my code i print out the visited nodes.
The examples in the Boost User Guide about the visitor concept are sometimes not so easy to understand.
... using namespace boost; template <typename VertexNameMap> class bfs_name_printer:public default_bfs_visitor { public: bfs_name_printer(VertexNameMap n_map) : m_name_map(n_map){} template
void discover_vertex(Vertex u, const Graph& ) const { std::cout< }; ...
main(){
... typedef property_map
::type VertexNameMap; VertexNameMap id = get(vertex_index, g); bfs_name_printer<VertexNameMap> vis(id); breadth_first_search(fg, s, visitor(vis)); ...
Regards, Matthias
participants (3)
-
Christopher D. Russell
-
Douglas Gregor
-
Matthias Linkenheil