Voi implementa un algoritm in C++ cu accelerator Grafic.
Vreau să găsesc toate vertex în apropiere de v (deci, toți vecinii săi), apoi modificați o proprietate a lor și în cele din urmă clar toate marginile lor.
Am găsit în Impuls funcția adjacent_vertices(v,g)
(unde v este nod, iar g este graf) pentru a găsi toți vecinii. Apoi vreau să aplice, pe toate le-funcția clear_vertex(v,g)
(din nou, v este nod, iar g este graf) pentru a elimina toate marginile lor.
În acest moment, am o problema. La adjacent_vertices
funcția returnează o pereche de adjacency_iterator
, în timp ce pentru clear_vertex
funcția trebuie vertex_iterator
(dacă am înțeles corect modul în care aceste funcții de lucru).
Deci, există o modalitate ușoară de a transforma adjacency_iterator
în vertex_iterator
? Dacă țin adjacency_iterator
și trece-l la clear_vertex
funcția, problema este ca nu elimina marginile (sau a le elimina aleatoriu pentru unele noduri).
Meu greșit codul este:
Graph::adjacency_iterator v,vend;
for(boost::tie(v,vend) = neighbours; v != vend ; ++v) {
clear_vertex(*v,g2);
}