3

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

如上一个问题所示,从图中删除顶点并再次添加它会出现问题。

我的问题略有不同。我有一个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是不正确的。

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

谢谢!

4

1 回答 1

2

我可能错了,但我想这是由我在回答您提到的上一个问题时描述的相同错误引起的。

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

如果我是正确的,那么问题是由于boost::labeled_graph. 它出现在 Boost 1.54.0 和 1.55.0(最新版本)中。

请参阅错误报告以获取可能为您解决此问题的补丁。

于 2013-12-13T13:09:25.113 回答