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.

War es hilfreich?

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 .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top