Ho iniziato a utilizzare il BGL per alcune attività relative al grafico. Ho un gran numero di spigoli e ogni spigolo ha diverse proprietà, una delle quali è il suo peso. (Tutte le proprietà sono galleggianti e int). Dal momento che non ho mai lavorato con le librerie BGL (e/o simili CPP) prima, sono un po 'perso con tutti questi tipi, classi e come usarlo correttamente.proprietà personalizzate per i bordi nel BGL
aggiungo i miei bordi come questo:
struct EdgeProperty
{
int weight;
float e1;
float e2;
};
typedef adjacency_list<vecS, vecS, bidirectionalS, no_property, EdgeProperty> Graph;
...
EdgeProperty prop;
node1 = ...;
node2 = ...;
prop.e1 = ...;
prop.e2 = ...;
prop.weight = ...;
add_edge(node1, node2, prop, g);
Poi, ho bisogno di accedere alla mia proprietà in seguito, quello che sto cercando di fare in questo modo:
property_map<Graph, EdgeProperty>::type EdgeWeightMap = get(EdgeProperty, g);
w = get(EdgeWeightMap,some_edge);
Tuttavia, questo non lo fa anche compilare. Si dice nel messaggio di errore:
error: no type named ‘kind’ in ‘struct EdgeProperty’
tra altri errori, che ritengo meno importante in questo momento. Non so se questo è il modo in cui useresti le proprietà personalizzate. Potresti spiegarmi il messaggio di errore kind
e come utilizzare le proprietà personalizzate? Non sono riuscito a trovare alcuna documentazione (che capisco) su questo argomento.
Questo collegamento mi ha aiutato molto. Grazie! – janoliver