Quiero usar el método de aumentos breadth_first_visit
y me gustaría proporcionarlo con mi propio mapa de colores "externo". he definido el gráfico de la siguienteMapa de colores en el gráfico de boost 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;
donde Node_t
es una estructura, la definición de las propiedades de los vértices. Sin embargo, no puedo averiguar cómo puedo proporcionar el BFS con mi propio mapa de colores. Me gustaría para almacenar los colores de los vértices en un vector, por lo que mi definición parece
std::vector<boost::default_color_type> colors;
pero no puedo entenderlo, cómo utilizar esto para las BFS.
Ni
boost::breadth_first_search(g, *boost::vertices(g).first,
boost::color_map(colors));
ni
boost::breadth_first_search(g, *boost::vertices(g).first,
boost::color_map(&colors[0]));
está trabajando. Mientras que el primero me da un montón de errores de compilación diferentes (por ejemplo, no se admite el valor predeterminado-int, el uso del tipo de clase requiere lista de argumentos del tipo "boost :: color_traits") la segunda compilación aborta solo con C2664: 'boost :: put' no puede convierte el parámetro 2 de 'void *' a 'ptrdiff_t'.
Entonces la pregunta es: ¿Cómo puedo usar mi propia estructura de mapeo de color? Una pregunta adicional sería: ¿Cómo puedo obtener el valor de color para un vertex_descriptor específico?
en 'impulso :: breadth_first_visit (g, * boost :: vértices (g) .First, impulso :: color_map (mapa de colores)); "tú" no está pasando a un visitante: ¿cuál es la firma para pasar a un visitante y un mapa de color? –
phew, eso es hace mucho tiempo;) no probé esto, pero [aquí] (http://www.boost.org/doc/libs/1_62_0/libs/graph/doc/breadth_first_visit.html) usted encuentre la segunda firma con una clase 'BFSVisitor' como argumento. – AquilaRapax
Creo que lo descubrí realmente: está usando la firma del "argumento nombrado". No sé cómo se supone que debes saber qué nombres son válidos, pero para 'breadth_first_search' parece que' visitor' es uno y 'color_map' es otro. –