【问题标题】:Boost graph - after vertex removal, vertex still existsBoost graph - 顶点移除后,顶点仍然存在
【发布时间】:2013-07-24 17:13:06
【问题描述】:

可能是boost的图库中的一个错误,但也许你可以帮助我。

previous question 中所示,从图中删除顶点并重新添加时存在问题。

我的问题略有不同。我有一个使用对象指针作为标签的boost::labeled_graph。让anObject 成为指向特定对象的指针,让aGraph 成为boost::labeled_graph。 然后执行以下代码:

clear_vertex_by_label(anObject, aGraph);
aGraph.remove_vertex(anObject);

Vertex v = aGraph.vertex(anObject);

我本以为会出现异常,但 v 似乎是 aGraph 中的一个顶点。现在出现以下问题(我认为它只发生在boost::labeled_graph):

当我执行以下代码时:

clear_vertex_by_label(anObject, aGraph);
aGraph.remove_vertex(anObject);

Vertex v = aGraph.add_vertex(aSecondObject);

Vertex v2 = aGraph.vertex(anObject);
Vertex v3 = aGraph.vertex(aSecondObject);

在执行此代码后v == v2 == v3 并不能正确。

有人知道如何解决这个问题吗?是否有可能从图表中完全删除标签?我认为标签仍然存在并且它仍然“指向”同一个顶点节点,尽管顶点本身不再相同(或者即使它不存在)。

谢谢!

【问题讨论】:

    标签: boost graph vertex


    【解决方案1】:

    我可能错了,但我想这是由我 described in an answer 到您所指的 previous question 的相同错误引起的。

    vertex 本身不再存在,但其关联的vertex descriptor 确实存在,因为实现不会将其从labeled_graph 的内部映射中删除。

    如果我是正确的,那么问题是boost::labeled_graph 的实现中的错误导致的。它出现在 Boost 1.54.0 和 1.55.0(最新版本)中。

    请参阅bug report 获取可能为您解决此问题的补丁。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多