Som implementácii algoritmu v C++ s Boost Graf.
Chcem nájsť všetky vertex v okolí v (tak, všetkých svojich susedov), potom zmena majetkom a nakoniec vymazať všetky ich okrajoch.
Našiel som v Boost funkcia adjacent_vertices(v,g)
(kde v je vrchol a g je graf) nájsť všetky susedov. Potom som sa má vzťahovať na všetky ich funkcie clear_vertex(v,g)
(opäť, v je vrchol a g je graf) odstrániť všetky ich okrajoch.
V tomto bode, mám problém. Na adjacent_vertices
funkcia vráti pár adjacency_iterator
,, zatiaľ čo pre clear_vertex
funkcie, ktoré potrebujem vertex_iterator
(ak chápem správne, ako sa tieto funkcie pracujú).
Takže, existuje jednoduchý spôsob, ako zmeniť adjacency_iterator
v vertex_iterator
? Ak som udržať adjacency_iterator
a odovzdať ju na clear_vertex
funkcia, problém je, že to nie je odstránenie okrajov (alebo ich odstrániť náhodne na niektoré vrcholy).
Môj nesprávny kód je:
Graph::adjacency_iterator v,vend;
for(boost::tie(v,vend) = neighbours; v != vend ; ++v) {
clear_vertex(*v,g2);
}