remove_vertex, когда график VertexList=vecS

У меня есть График Повышения с VertexList=vecS.

typedef adjacency_list <listS, vecS, undirectedS, TrackInformation, LinkInformation> TracksConnectionGraph;

Теперь я хочу выполнить итерации через свои вершины и удалить тех, которые имеют определенное свойство. Как я могу сделать это?

Проблема состоит в том каждый раз, когда я называю remove_vertex, итератор к вершинам в графике наряду с дескрипторами вершины делаются недействительным.

6
задан Kirill V. Lyadvinsky 6 July 2010 в 04:27
поделиться

1 ответ

Я не думаю, что это возможно (в разумные сроки) с vecS в качестве параметра шаблона. Посмотрите, что говорится в документации Boost:

Если параметр шаблона VertexList в adjacency_list был vecS , то все дескрипторы вершин, дескрипторы ребер и итераторы для График аннулируются этой операцией. <...> Если вам нужно часто использовать функцию remove_vertex () , то для параметра шаблона VertexList лучше выбрать селектор listS .

В случае listS итераторы не становятся недействительными путем вызова remove_vertex , если итератор не указывает на фактическую вершину, которая была удалена.

1
ответ дан 17 December 2019 в 00:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: