Je suis l'implémentation d'un algorithme en C++ avec Boost Graph.
Je veux trouver tous les vertex dans le voisinage de v (donc, l'ensemble de ses voisins), puis changez la propriété de leurs et enfin effacer tous leurs bords.
J'ai trouvé dans la fonction Boost adjacent_vertices(v,g)
(où v est le sommet et g est le graphe) pour trouver tous les voisins. Alors je veux appliquer sur toutes les fonction clear_vertex(v,g)
(encore une fois, v est le sommet et g est le graphe) pour supprimer l'ensemble de leurs bords.
À ce stade, j'ai un problème. L' adjacent_vertices
la fonction retourne une paire de adjacency_iterator
tandis que pour les clear_vertex
fonction que j'ai besoin vertex_iterator
(si je comprends bien la façon dont ces fonctions de travail).
Donc, il ya un moyen facile de transformer l' adjacency_iterator
dans vertex_iterator
? Si je garde le adjacency_iterator
et passer à la clear_vertex
la fonction, le problème est qu'il ne supprime pas les bords (ou de les supprimer de manière aléatoire à certains sommets).
Mon mal de code est:
Graph::adjacency_iterator v,vend;
for(boost::tie(v,vend) = neighbours; v != vend ; ++v) {
clear_vertex(*v,g2);
}