2017-01-23 4 views
0

Ich habe Boost-Grafik verwendet und es scheint, dass ich es nicht sehr gut verstehe.Boost-Graph Zugriff auf das Etikett einer Kante

Um auf die Bezeichnung eines Eckpunktes zuzugreifen, scheint es in Ordnung zu sein, get (vertex_name, graph_) zu verwenden und dann mit dem [] darauf zuzugreifen. Aber wie kann ich auf das Etikett einer Kante zugreifen.

Ich habe versucht, die gleiche Methode (und viele andere falsche Sachen) aber Ich habe nicht erfolgreich auf seine Bezeichnung zugreifen.

Hier ist ein Ausschnitt aus meinem Code:

typedef property<edge_name_t, int> edge_property; 
typedef property<vertex_name_t, int> vertex_property; 
typedef adjacency_list<vecS, vecS, undirectedS, vertex_property, edge_property> MyGraph; 

MyGraph graph_; 
add_vertex(vertex_property(6), graph_); 
add_vertex(vertex_property(1), graph_); 
add_vertex(vertex_property(1), graph_); 
add_edge(0, 1, edge_property(2), graph_); 
add_edge(1, 2, edge_property(3), graph_); 
add_edge(0, 2, edge_property(1), graph_); 

cout << "Graph 1 [graph_]" << endl; 
typedef graph_traits<MyGraph>::edge_iterator edge_iter; 
pair<edge_iter, edge_iter> ep; 

property_map<MyGraph, vertex_name_t>::type labelling_vertex = get(vertex_name, graph_); 
property_map<MyGraph, edge_name_t>::type labelling_edge = get(edge_name, graph_); 

int position = 0; 
for (ep = edges(graph_); ep.first != ep.second; ++ep.first) { 
    unsigned int source_ = source(*ep.first, graph_); 
    unsigned int target_ = target(*ep.first, graph_); 
    cout << source_ << "["<< labelling_vertex[source_] <<"]" << " ~~~~" << labelling_edge[position] << "~~~~ " << target_ <<"[" <<labelling_vertex[target_] <<"]" << endl; 
    position++; 
} 

Antwort

0

Ok, fand nur einen Weg, dies zu tun.

labelling_edge [(* ep.first)]

Sorry, Sie gestört zu haben

Verwandte Themen