я начал использовать BGL для некоторых задач, связанных с графами. У меня много ребер, и каждое ребро имеет несколько свойств, одно из которых - его вес. (Все свойства являются числами с плавающей запятой и целыми числами). Поскольку я никогда раньше не работал с BGL (и / или подобными библиотеками CPP), я немного потерялся со всеми этими типами, классами и тем, как их правильно использовать.
Я добавляю ребра следующим образом:
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);
Затем мне нужно получить доступ к моему свойству позже, что я пытаюсь сделать вот так:
property_map<Graph, EdgeProperty>::type EdgeWeightMap = get(EdgeProperty, g);
w = get(EdgeWeightMap,some_edge);
Однако это даже не компилируется. В сообщении об ошибке говорится:
error: нет типа с именем «kind» в «struct EdgeProperty»
среди других ошибок, которые я сейчас считаю менее важными. Я не знаю, можно ли так использовать настраиваемые свойства. Не могли бы вы объяснить мне сообщение об ошибке вида
и как использовать настраиваемые свойства? Я не смог найти никакой документации (насколько я понимаю) по этой теме.