2009-03-03 10 views
2

Ich versuche Boost Adjazenz_list Typ zu verwenden und ich habe Probleme zu verstehen, die documentation.Boost adjacency_list Hilfe benötigt

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 diese in einen Schub geben wollen :: 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 hat:

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

Ich verstehe, wie ints in die Grafik zu setzen und ich hielt nur eine Reihe von Staaten zu machen und das Einfügen ihres Array-Index in die Graphen, aber es scheint so, als ob ich nur sagen könnte:

aber natürlich funktioniert das nicht. Bitte helfen Sie!

Edit:
Here's ein Beispiel fast genau das, was ich brauche.

+0

Wie funktioniert das nicht, wäre ein Fehler hilfreich. – user7116

Antwort

3

Lesen auf boost :: adjacency_list, es scheint, dass Sie sollen Eigenschaften eher für die Scheitelpunkte verwenden, als 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) von an example in boost angepasst.

+0

Oy! Es ist schlimmer als ich dachte. Ich denke, ich werde einen anderen Weg finden, dies zu tun. Ich möchte nicht Code pflegen müssen, der ... clever ist. Danke für die Antwort. – criddell

+0

Fügen Sie VertexProperties als vierten Vorlagenparameter von Graph hinzu. Das bedeutet, dass du bidirektionalS als 3. hinzufügen musst. –

+0

Danke, ich habe diese Änderungen vorgenommen. – user7116