Я реализую алгоритм на C++ с помощью Boost Graph.
Я хочу найти всю вершину в окрестности v (то есть всех ее соседей), затем изменить их свойство и, наконец, очистить все их ребра.
Я нашел в Boost функцию adjacent_vertices(v,g)
(где v-вершина, а g-граф), чтобы найти всех соседей. Затем я хочу применить ко всем из них функцию clear_vertex(v,g)
(опять же, v-вершина, а g-граф), чтобы удалить все их ребра.
На данный момент у меня есть проблема. То adjacent_vertices
функция возвращает пару adjacency_iterator
, в то время как для clear_vertex
функция, которая мне нужна vertex_iterator
(если я правильно понимаю, как работают эти функции).
Итак, есть простой способ преобразовать adjacency_iterator
в vertex_iterator
? Если я сохраню adjacency_iterator
и передайте его в clear_vertex
функция, проблема в том, что она не удаляет ребра (или удаляет их случайным образом в некоторые вершины).
Мой неправильный код-это:
Graph::adjacency_iterator v,vend;
for(boost::tie(v,vend) = neighbours; v != vend ; ++v) {
clear_vertex(*v,g2);
}