我应该使用迭代器或描述符来保留边或顶点上的引用吗?

2023-12-20

我目前正在设计一个由 Boost Graph (adjacency_list) 和引用此结构中的边或顶点的几个类组成的应用程序。

我的问题是:维护对节点或顶点的引用的推荐方法是什么?

我猜想在迭代器的情况下,对象访问速度更快,但迭代器可能会因图结构的动态变化而失效。

相反,描述符是一个 id,这意味着需要进行搜索来检索数据,但在图形发生变化时可能不太容易触发内存错误。

这是真的吗?


迭代器/描述符的稳定性和迭代器的效率都取决于您的顶点容器。

For vectorS例如,顶点描述符只是向量中顶点的索引,因此容器中的查找与向量中的索引一样快。在这种情况下,描述符与迭代器一样不稳定,因为插入和删除可能会导致元素移动。

For listS我期望(读:“猜测”)描述符是元素的地址,因此描述符和迭代器都可能具有相同的稳定性保证。在这种情况下,使用顶点描述符来访问属性很可能与迭代器一样高效。

欲了解更多信息adjacency_list迭代器/描述符稳定性请阅读标题为迭代器和描述符稳定性/失效 on this http://www.boost.org/doc/libs/1_54_0/libs/graph/doc/adjacency_list.html页。考虑到性能问题,您最好对两者进行分析以进行比较,并且只有当它似乎成为应用程序中的瓶颈时。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我应该使用迭代器或描述符来保留边或顶点上的引用吗? 的相关文章

随机推荐