小编ali*_*i01的帖子

Boost Graph Library:潜在的Bug

即使图中没有循环,BGL的depth_first_search算法有时会对访问者调用back_edge().根据后沿的定义,根据Boost的DFS访客文档,这不应该发生.请注意,仅当listS用作顶点和边的表示时,这才是可重现的.

下面的代码示例(应该按原样编译)构造一个包含两个节点和一个边的图.它错误地打印"后边缘".我在这里做错了吗?或者这是一个错误?

#include <iostream>
using namespace std;

#include <boost/graph/adjacency_list.hpp>
#include <boost/graph/depth_first_search.hpp>
#include <boost/graph/visitors.hpp>
using namespace boost;

typedef boost::property<boost::vertex_index_t,std::size_t> VertexProperties;
typedef boost::adjacency_list<boost::listS,
                              boost::listS,
                              boost::bidirectionalS,
                              VertexProperties> Graph;  // Graph object type

typedef boost::graph_traits<Graph>::vertex_descriptor Vertex;
typedef boost::graph_traits<Graph>::edge_descriptor Edge;

class VisitorClass : public dfs_visitor<> {
 public:
  VisitorClass() {}

  template <typename Edge, typename Graph>
  void back_edge(Edge, const Graph&) const {
    cout << "back edge" << endl;
  }
};

int
main() {
  Graph g;
  Vertex v = add_vertex(g);
  Vertex u = add_vertex(g);

  bool inserted; …
Run Code Online (Sandbox Code Playgroud)

boost graph visitor boost-graph

7
推荐指数
1
解决办法
536
查看次数

标签 统计

boost ×1

boost-graph ×1

graph ×1

visitor ×1