Boost Graph ile C++ ' da bir algoritma uyguluyorum.
V mahallesindeki tüm köşeyi (yani tüm komşularını) bulmak, sonra onların bir özelliğini değiştirmek ve sonunda tüm kenarlarını temizlemek istiyorum.
Boost işlevinde buldum adjacent_vertices(v,g)
(burada v tepe noktasıdır ve g grafiktir) tüm komşuları bulmak için. Sonra hepsine bu işlevi uygulamak istiyorum clear_vertex(v,g)
(yine, v tepe noktasıdır ve g grafiktir) tüm kenarlarını kaldırmak için.
Bu noktada bir sorunum var. Bu adjacent_vertices
işlev bir çift döndürür adjacency_iterator
, süre için clear_vertex
ihtiyacım olan işlev vertex_iterator
(bu işlevlerin nasıl çalıştığını doğru anlarsam).
Yani, dönüştürmenin kolay bir yolu var adjacency_iterator
içinde vertex_iterator
? Eğer bende kalırsa adjacency_iterator
ve pas clear_vertex
ancak sorun, kenarları kaldırmaması (veya bazı köşelere rastgele kaldırmamasıdır).
Yanlış kodum:
Graph::adjacency_iterator v,vend;
for(boost::tie(v,vend) = neighbours; v != vend ; ++v) {
clear_vertex(*v,g2);
}