如何在Boost图形中不允许重复的顶点?

时间:2019-03-16 13:47:03

标签: boost boost-graph

如何禁止增强图中的重复顶点?

using graph_t = boost::adjacency_list<boost::listS, boost::setS, boost::bidirectionalS>;

但仍然在图形中看到重复的节点。不够setS来支持vertexList吗?

void doGraph() {
      using graph_t =
         boost::adjacency_list<boost::setS, boost::setS, boost::directedS, std::string>;
      graph_t interference;
      add_vertex("m", interference);
      add_vertex("m", interference);
      // prints 2, why?
      std::cout << "vert #" << num_vertices(interference);
  }

1 个答案:

答案 0 :(得分:0)

属性束不是顶点的相等性定义的一部分。顶点描述符是,并且它们不相同:

  auto v1 = add_vertex("m", interference);
  auto v2 = add_vertex("m", interference);
  assert(v1 != v2);

如果要按名称查找,则必须自己为其添加索引(使用地图/双图)。如果只想命名顶点,请考虑使用labeled_graph适配器(https://www.boost.org/doc/libs/1_69_0/libs/graph/example/labeled_graph.cpp)。遗憾的是,该适配器不是文档库的一部分。我曾经写过几个使用它的答案。