当图形VertexList = vecS时remove_vertex

Dat*_*Chu 6 c++ boost boost-graph

我有一个带有VertexList = vecS的Boost图.

typedef adjacency_list <listS, vecS, undirectedS, TrackInformation, LinkInformation> TracksConnectionGraph;
Run Code Online (Sandbox Code Playgroud)

现在我想迭代我的顶点并删除那些具有特定属性的顶点.我怎样才能做到这一点?

问题是每当我调用remove_vertex时,图中顶点的迭代器以及顶点描述符都会失效.

Kir*_*sky 1

我认为不可能(在合理的时间内)作为vecS模板参数。看看 Boost 文档是怎么说的:

如果VertexList的模板参数adjacency_listwas vecS,则该图的所有顶点描述符、边描述符和迭代器都将因此操作而失效。<...> 如果您需要频繁使用该remove_vertex()函数,那么listS选择器是模板参数的更好选择VertexList

如果listS迭代器不会通过调用而失效remove_vertex,除非迭代器指向已删除的实际顶点。