问题是关于Boost Graph Library。
假设我们存储一个具有图形每个顶点的对象,并且顶点和对象之间存在一对一的对应关系。进一步假设我们维护std::map
以启用查找与给定对象相对应的顶点描述符。
但是,在删除顶点的情况下,此解决方案似乎容易使顶点描述符无效。有办法解决这个问题吗?
在this问题中,出现以下句子:
我想以一种他们不会在我移除顶点时无效的方式存储顶点描述符,所以我使用boost :: listS
似乎该问题的作者解决了顶点失效的问题,但我不明白它是什么。
编辑:澄清维护地图的原因。在以下场景中出现了基于对象查找顶点的需要。假设我们已经生成了一个对象。我们需要查找与我们刚刚生成的对象相等的对象(在operator==
意义上)对应的顶点。
答案 0 :(得分:2)
使用listS
或setS
作为顶点容器选择器,使失效保证等于相应的标准库容器(Iterator invalidation rules)。
通常,除非删除,否则基于节点的容器不会使任何迭代器失效。
此时我也想建议捆绑属性,你根本不需要维护从对象到顶点描述符/索引的映射。