可能,这是一个提升图表库中的错误,但也许你可以帮助我。
如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
后,这可能不正确。
有谁知道如何解决这个问题?是否有可能从图表中完全删除标签?我认为标签仍然存在,它仍然“指向”相同的顶点节点,尽管顶点本身不再相同(或者即使它不存在)。
谢谢!
答案 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以获取可能为您解决此问题的修补程序。