Realizuję algorytm w C++ za pomocą Boost Graph.
Chcę znaleźć wszystkie szczyt w okolicy v (czyli wszystkich jej sąsiadów), a następnie zmienić ich właściwości i wreszcie, wyczyść wszystkie ich krawędzie.
Znalazłem w funkcji Boost adjacent_vertices(v,g)
(gdzie v-wierzchołek, a g-hrabia), aby znaleźć wszystkich sąsiadów. Następnie chcę zastosować do wszystkich z nich funkcję clear_vertex(v,g)
(znowu, v-wierzchołek, a g-hrabia), aby usunąć je wszystkie żebra.
W tym momencie mam problem. To adjacent_vertices
funkcja zwraca parę adjacency_iterator
, podczas gdy dla clear_vertex
funkcja, która jest mi potrzebna vertex_iterator
(jeśli dobrze rozumiem, jak działają te funkcje).
Tak więc, istnieje prosty sposób, aby przekształcić adjacency_iterator
w vertex_iterator
? Jeśli zachowam adjacency_iterator
i przekazać go w clear_vertex
funkcja, problem w tym, że ona nie usuwa żebra (lub usuwa je losowo na niektóre szczyty).
Mój niepoprawny kod to:
Graph::adjacency_iterator v,vend;
for(boost::tie(v,vend) = neighbours; v != vend ; ++v) {
clear_vertex(*v,g2);
}