【发布时间】:2021-02-07 07:37:42
【问题描述】:
我正在阅读有关 adjacency_list 的文档以及 choosing the graph type 对内存消耗、big-O 运行时和描述符稳定性的影响。
引用第一个链接:
下表总结了哪些操作导致描述符和迭代器无效。表中EL是OutEdgeList的缩写,VL是VertexList的缩写。 Adj Iter 类别包括 out_edge_iterator、in_edge_iterator 和 adjacency_iterator 类型。
每个操作的文档中给出了描述符和迭代器失效的更详细描述。
我知道,如果将vecS 用于VertexList,那么remove_vertex() 上的所有顶点描述符都将被调整,以便它们仍然是连续的。
我不明白为什么显然使用vecS 会导致边缘迭代使边缘描述符无效。
我是否正确理解该表,因为它说“如果您在 adjacency_list 图形上使用 vecS 边缘列表类型,即 directedS,那么您无法稳定地迭代边缘,因为迭代它们将使边缘迭代器和边缘描述符无效”?
如果我理解正确,请解释为什么会这样。如果我理解错了,请澄清使用vecS为Edge List的实际效果。
谢谢。
【问题讨论】:
标签: c++ boost boost-graph adjacency-list