BGL:以不会使

时间:2015-11-15 19:18:26

标签: c++ boost

问题是关于Boost Graph Library。

假设我们存储一个具有图形每个顶点的对象,并且顶点和对象之间存在一对一的对应关系。进一步假设我们维护std::map以启用查找与给定对象相对应的顶点描述符。

但是,在删除顶点的情况下,此解决方案似乎容易使顶点描述符无效。有办法解决这个问题吗?

this问题中,出现以下句子:

  

我想以一种他们不会在我移除顶点时无效的方式存储顶点描述符,所以我使用boost :: listS

似乎该问题的作者解决了顶点失效的问题,但我不明白它是什么。

编辑:澄清维护地图的原因。在以下场景中出现了基于对象查找顶点的需要。假设我们已经生成了一个对象。我们需要查找与我们刚刚生成的对象相等的对象(在operator==意义上)对应的顶点。

1 个答案:

答案 0 :(得分:2)

使用listSsetS作为顶点容器选择器,使失效保证等于相应的标准库容器(Iterator invalidation rules)。

通常,除非删除,否则基于节点的容器不会使任何迭代器失效。

此时我也想建议捆绑属性,你根本不需要维护从对象到顶点描述符/索引的映射。

示例(来:https://www.livecoding.tv/sehe/