Jsem implementaci algoritmu v jazyce C++ s Boost Graph.
Chci najít všechny vrcholy v okolí v (takže všechny své sousedy), pak změna majetkem a konečně vymazat všechny jejich hrany.
Našel jsem v Boost funkce adjacent_vertices(v,g)
(kde v je vrchol a g je graf) najít všechny sousedy. Pak chci použít na všechny funkce clear_vertex(v,g)
(opět, v je vrchol a g je graf) odstranit všechny jejich hrany.
V tomto bodě, mám problém. Na adjacent_vertices
funkce vrací dvojici adjacency_iterator
, zatímco pro clear_vertex
funkce potřebuji vertex_iterator
(pokud jsem správně pochopil, jak tyto funkce pracují).
Takže, tam je snadný způsob, jak transformovat adjacency_iterator
v vertex_iterator
? Pokud jsem se udržet adjacency_iterator
a předat ji do clear_vertex
funkce, problém je, že to neznamená, odstranění okrajů (nebo je odstranit náhodně na některé vrcholy).
Můj špatný kód je:
Graph::adjacency_iterator v,vend;
for(boost::tie(v,vend) = neighbours; v != vend ; ++v) {
clear_vertex(*v,g2);
}