Pregunta

Estoy tratando de usar el tipo de lista de adyacencia de Boost y tengo problemas para entender el documentación .

Diga que defino una clase llamada State y que instancia una instancia para cada estado en los Estados Unidos:

class State { ... };
State california, oregon, nevada, arizona, hawaii, ...

Quiero ingresar estos en un boost :: adjacency_list los vértices son estados y los bordes son bordes. Para los estados que enumeré anteriormente, creo que la gráfica tendría estos datos:

california : oregon, nevada, arizona
hawaii :
oregon : california, nevada
nevada : oregon, california, arizona
arizona : california, nevada

Comprendo cómo colocar las ints en el gráfico y consideré simplemente hacer una serie de estados e insertar su índice de matriz en el gráfico, pero parece que debería poder decir simplemente:

add_edge(california, oregon, graph);

pero por supuesto eso no funciona. Por favor ayuda!

Editar:
Aquí hay un ejemplo de casi exactamente lo que necesita.

¿Fue útil?

Solución

Leyendo sobre boost :: adjacency_list, parece que debes usar las propiedades de los vértices en lugar de algo como una clase:

struct VertexProperties {
    std::string stateName;
};

typedef adjacency_list<listS, listS, bidirectionalS, VertexProperties> Graph;
Graph adjacentStates(50);

property_map<Graph, std::string VertexProperties::*>::type
    stateName = get(&VertexProperties::stateName, adjacentStates);

add_edge(vertex("california", adjacentStates), vertex("oregon", adjacentStates), adjacentStates);

(Mal) adaptado de un ejemplo en boost .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top