У меня есть График Повышения с VertexList=vecS.
typedef adjacency_list <listS, vecS, undirectedS, TrackInformation, LinkInformation> TracksConnectionGraph;
Теперь я хочу выполнить итерации через свои вершины и удалить тех, которые имеют определенное свойство. Как я могу сделать это?
Проблема состоит в том каждый раз, когда я называю remove_vertex, итератор к вершинам в графике наряду с дескрипторами вершины делаются недействительным.
Я не думаю, что это возможно (в разумные сроки) с vecS
в качестве параметра шаблона. Посмотрите, что говорится в документации Boost:
Если параметр шаблона
VertexList
вadjacency_list
былvecS
, то все дескрипторы вершин, дескрипторы ребер и итераторы для График аннулируются этой операцией. <...> Если вам нужно часто использовать функциюremove_vertex ()
, то для параметра шаблонаVertexList
лучше выбрать селекторlistS
.
В случае listS
итераторы не становятся недействительными путем вызова remove_vertex
, если итератор не указывает на фактическую вершину, которая была удалена.