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.

È stato utile?

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 .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top