首页 文章

BGL:以不会使其无效的方式存储顶点描述符

提问于
浏览
1

问题是关于Boost Graph Library .

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

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

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

我想以一种他们不会失效的方式存储顶点描述符,以防我删除一个顶点,所以我使用boost :: listS

看起来这个问题的作者解决了顶点失效的问题,但我不明白它是什么 .

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

1 回答

  • 2

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

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

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

    样品(来了:https://www.livecoding.tv/sehe/

相关问题