繁体   English   中英

C ++ Boost图形库:建立在无向图搜索中访问的顶点的向量?

[英]C++ Boost graph library: Building a vector of vertices visited in an undirected graph search?

从我可以收集到的有关如何使用BGL以便从已知根节点调用图的DFS的角度出发,我需要按照以下步骤进行操作:

class MyVisitor : public boost::default_dfs_visitor
{
  public:
  void discover_vertex(MyVertex v, const MyGraph& g) const
 {
    cerr << v << endl;
    return;
 }

};


 void bfsMethod(Graph g, int rootNodeId)
 {

   boost::undirected_dfs(g, vertex(rootNodeId,g), boost::visitor(vis)); 

 }

现在,我不确定如何更改此设置,以便在DFS访问图形中的所有顶点时(类似于使用最小生成树算法的方式)来构建vertexId(或指针)的std::vector

std::vector < JPEdge > spanning_tree;
kruskal_minimum_spanning_tree(g, std::back_inserter(spanning_tree));

引导程序必须是您的访客的成员。 discover_vertex函数中,只需将发现的元素推入向量中即可。

class MyVisitor : public boost::default_dfs_visitor
{
  public:
  void discover_vertex(MyVertex v, const MyGraph& g) const
 {
    cerr << v << endl;
    vv.push_back(v);
    return;
 }

  vector<MyVertex> GetVector() const {return vv; }

 private: 
 vector<MyVertex> vv;

};

void bfsMethod(Graph g, int rootNodeId)
{
  MyVisitor vis;
  boost::undirected_dfs(g, vertex(rootNodeId,g), vis); 
  vector<MyVertex> vctr = vis.GetVector();

 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM