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