Potenzia l'aiuto di adjacency_list necessario
-
03-07-2019 - |
Domanda
Sto cercando di usare il tipo adjacency_list di Boost e ho difficoltà a comprendere documentazione .
Dire che definisco una classe denominata Stato e istanzio un'istanza per ogni stato negli Stati Uniti:
class State { ... };
State california, oregon, nevada, arizona, hawaii, ...
Voglio inserirli in una boost :: adjacency_list i vertici sono stati e i bordi sono bordi. Per gli stati che ho elencato sopra, penso che il grafico avrebbe questi dati:
california : oregon, nevada, arizona
hawaii :
oregon : california, nevada
nevada : oregon, california, arizona
arizona : california, nevada
Capisco come inserire gli input nel grafico e ho considerato solo la creazione di una matrice di stati e l'inserimento del loro indice di matrice nel grafico, ma sembra che dovrei essere in grado di dire semplicemente:
add_edge(california, oregon, graph);
ma ovviamente non funziona. Per favore, aiutate!
Modifica
Ecco un esempio di quasi esattamente ciò che I hanno bisogno.
Soluzione
Leggendo su boost :: adjacency_list, sembra che dovresti usare le proprietà per i vertici piuttosto che qualcosa come una classe:
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);
(scarso) adattato da un esempio in boost .