chcę użyć zwiększa breadth_first_visit
metody i chciałbym przekazać jej własnym „zewnętrznej” kolorów mapy. I określonych wykres następującomapa kolorów na wykresie doładowania breadth_first_visit
typedef boost::adjacency_list<boost::setS, boost::listS, boost::undirectedS,
boost::property<boost::vertex_index_t, int,
boost::property<boost::vertex_color_t, boost::default_color_type,
Node_t>>> GraphType;
gdzie Node_t
jest struktura, określające właściwości wierzchołków. Jednak nie mogę się dowiedzieć, w jaki sposób mogę dostarczyć BFS z moją własną mapą kolorów. Chciałbym zapisać kolorów wierzchołków w wektorze, więc moja definicja wygląda
std::vector<boost::default_color_type> colors;
ale nie mogę zrozumieć to, jak wykorzystać to dla BFS.
Ani
boost::breadth_first_search(g, *boost::vertices(g).first,
boost::color_map(colors));
ani
boost::breadth_first_search(g, *boost::vertices(g).first,
boost::color_map(&colors[0]));
działa. O ile pierwszy daje mi kilka różnych błędów kompilatora (np default-int nie jest obsługiwany „boost :: color_traits” Użycie typu klasy wymaga listę argumentów typu) drugi kompilacji przerywa tylko C2664: „boost :: umieścić” nie może przekonwertuj parametr 2 z "void *" na "ptrdiff_t".
Więc pytanie brzmi: Jak mogę użyć własnego Color-mapping-strukturę. Dodatkowe pytanie brzmi: Jak mogę uzyskać wartość koloru dla określonego vertex_descriptor?
w 'boost :: breadth_first_visit (g * boost :: wierzchołków (g) .first, boost :: color_map (colormap)); 'ty ' nie przekazujesz odwiedzającego - jaki jest podpis, aby przekazać odwiedzającego i mapę kolorów? –
uff, to jest to dość długi czas temu;) I nie próbujcie tego na zewnątrz, ale [tutaj] (http://www.boost.org/doc/libs/1_62_0/libs/graph/doc/breadth_first_visit.html), które znajdź drugą sygnaturę z argumentem 'BFSVisitor' jako argumentem. – AquilaRapax
Myślę, że naprawdę to wymyśliłem - używa podpisu "nazwanego argumentu". Nie wiem, jak powinieneś wiedzieć, które nazwy są poprawnymi argumentami, ale dla 'szerokość_pierwszego_wyszukiwania 'wygląda na to, że' odwiedzający' to jeden, a 'color_map' to inny. –