J'ai commencé à utiliser le BGL pour certaines tâches liées au graphe. J'ai un grand nombre de bords et chaque bord a plusieurs propriétés, dont l'un est son poids. (Toutes les propriétés sont floats et ints). Comme je n'ai jamais travaillé avec le BGL (et/ou des bibliothèques CPP similaires) auparavant, je suis un peu perdu avec tous ces types, classes et comment l'utiliser correctement.Propriétés personnalisées pour les arêtes dans le BGL
ajouter mes bords comme ceci:
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);
, je dois alors accéder à mon bien plus tard, ce que je suis en train de faire comme ceci:
property_map<Graph, EdgeProperty>::type EdgeWeightMap = get(EdgeProperty, g);
w = get(EdgeWeightMap,some_edge);
Cependant, cela ne même compiler. Il est dit dans le message d'erreur:
error: no type named ‘kind’ in ‘struct EdgeProperty’
entre autres erreurs, que je considère moins important en ce moment. Je ne sais pas si c'est ainsi que vous utiliseriez les propriétés personnalisées. Pourriez-vous s'il vous plaît m'expliquer le message d'erreur kind
et comment utiliser les propriétés personnalisées? Je n'ai trouvé aucune documentation (que je comprenne) sur ce sujet.
Ce lien m'a beaucoup aidé. Merci! – janoliver