提升图 - 顶点去除后,顶点仍然存在

时间:2013-07-24 17:13:06

标签: boost graph vertex

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

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后,这可能不正确。

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

谢谢!

1 个答案:

答案 0 :(得分:2)

我可能错了,但我想这是由于我described in an answer与您所指的previous question相同的错误造成的。

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

如果我是正确的,那么问题是由boost::labeled_graph的实施中的错误造成的。它存在于Boost 1.54.0和1.55.0(最新版本)中。

请参阅bug report以获取可能为您解决此问题的修补程序。