Ich möchte Boosts breadth_first_visit
Methode verwenden und ich möchte es mit meiner eigenen "externen" Farbkarte zur Verfügung stellen. I definiert sind, wie das DiagrammFarbkarte in Boost-Grafik breath_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;
wo Node_t
ein struct ist, um die Eigenschaften für die Ecken. Allerdings kann ich nicht herausfinden, wie ich das BFS mit meiner eigenen Farbkarte versorgen kann. Ich mag die Vertexfarben in einem Vektor speichern, so dass meine Definition sieht aus wie
std::vector<boost::default_color_type> colors;
, aber ich kann es nicht herausgefunden, wie dies für die bfs zu verwenden.
Weder
boost::breadth_first_search(g, *boost::vertices(g).first,
boost::color_map(colors));
noch
boost::breadth_first_search(g, *boost::vertices(g).first,
boost::color_map(&colors[0]));
arbeitet. Während der erste gibt mir eine Reihe von verschiedenen Compiler-Fehler (zB default-int wird nicht unterstützt, "boost :: color_traits" Verwendung der Klassenart erfordert Typ Argumentliste) der zweite Kompilierung bricht nur mit C2664 ab: 'boost :: put' kann nicht Konvertiere Parameter 2 von 'void *' in 'ptrdiff_t'.
Die Frage ist also: Wie kann ich meine eigene Farbmapping-Struktur verwenden? Eine zusätzliche Frage wäre: Wie kann ich den Farbwert für einen bestimmten Vertex_descriptor bekommen?
in 'boost :: breadth_first_visit (g, * boost :: Eckpunkten (g) .First boost :: color_map (ColorMap)) "du" Übergeben eines Besuchers nicht - Was ist die Unterschrift, um einen Besucher und eine Farbkarte zu übergeben? –
Puh, das ist schon ziemlich lange her;) Ich habe das nicht ausprobiert, aber [hier] (http://www.boost.org/doc/libs/1_62_0/libs/graph/doc/breath_first_visit.html) Sie finde die zweite Signatur mit einer 'BFSVisitor'-Klasse als Argument. – AquilaRapax
Ich denke, ich habe es tatsächlich herausgefunden - es verwendet die "benannte Argument" -Signatur. Ich weiß nicht, wie Sie wissen sollen, welche Namen gültige Argumente sind, aber für 'breath_first_search' scheint es, dass' visitor' eins ist und 'color_map' ein anderes ist. –