Erhöhung adjacency_list Hilfe benötigt
-
03-07-2019 - |
Frage
Ich versuche Erhöhung der adjacency_list Typen zu verwenden und ich habe Probleme beim Verständnis des Dokumentation .
Sagen, dass ich eine Klasse namens Staat definieren und ich instanziiert eine Instanz für jeden Staat in den USA:
class State { ... };
State california, oregon, nevada, arizona, hawaii, ...
Ich möchte diese in einen Schub geben :: adjacency_list die Eckpunkte sind Zustände und die Kanten sind Grenzen. Für die Zustände ich oben aufgeführt, ich glaube, der Graph würde diese Daten haben:
california : oregon, nevada, arizona
hawaii :
oregon : california, nevada
nevada : oregon, california, arizona
arizona : california, nevada
Ich verstehe, wie ints in die Grafik setzen und ich hielt nur eine Reihe von Staaten zu machen und ihren Array-Index in das Diagramm eingefügt, aber es scheint, als ob ich in der Lage sein sollte, nur sagen:
add_edge(california, oregon, graph);
aber das ist natürlich nicht funktioniert. Bitte helfen Sie!
Bearbeiten
Hier ist ein Beispiel fast genau das, was ich müssen.
Lösung
Lesen auf boost :: adjacency_list, es scheint, dass Sie sollen Eigenschaften für die Eckpunkte verwenden, anstatt so etwas wie eine Klasse:
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);
(Poorly) adaptiert von ein Beispiel in boost .