Sto implementando un algoritmo in C++ con un Boost Grafico.
Voglio trovare tutti i vertici, nel quartiere di v (così che tutti i suoi vicini di casa), quindi modificare una proprietà di loro e, infine, cancellare tutti loro bordi.
Ho trovato in Amplificare la funzione adjacent_vertices(v,g)
(dove v è il vertice e g è il grafico) per trovare tutti i vicini di casa. Poi voglio applicare in tutti loro la funzione di clear_vertex(v,g)
(di nuovo, la v è il vertice e g è il grafico) per rimuovere tutti i bordi.
A questo punto, ho un problema. Il adjacent_vertices
la funzione restituisce una coppia di adjacency_iterator
mentre per il clear_vertex
la funzione di cui ho bisogno vertex_iterator
(se ho capito bene come queste funzioni di lavoro).
Così, c'è un modo semplice per trasformare il adjacency_iterator
in vertex_iterator
? Se tengo il adjacency_iterator
e la passa al clear_vertex
funzione, il problema è che non rimuove i bordi (o rimuovere in modo casuale ad alcuni vertici).
Il mio sbagliato il codice è:
Graph::adjacency_iterator v,vend;
for(boost::tie(v,vend) = neighbours; v != vend ; ++v) {
clear_vertex(*v,g2);
}