2013-07-24 45 views
3

可能它是boost图库中的一个错误,但也许你可以帮助我。Boost图 - 顶点移除后,顶点仍然存在

previous question所示,从图形中删除顶点并再次将其添加回来存在问题。

我的问题稍有不同。我有一个boost::labeled_graph使用对象指针作为标签。假设anObject是指向特定对象的指针,并让aGraphboost::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执行后,并不能正确。

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

谢谢!

回答

2

我可能是错的,但我想这是由我指定的described in an answerprevious question的错误引起的。

vertex本身不存在了,但是它的关联vertex descriptor会执行,因为实现不会将它从labeled_graph的内部映射中删除。

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

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