【发布时间】:2011-12-18 15:42:33
【问题描述】:
我开始将 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: no type named ‘kind’ in ‘struct EdgeProperty’
在其他错误中,我认为现在不太重要。我不知道这是否是您使用自定义属性的方式。您能否向我解释一下kind 错误消息以及如何使用自定义属性?我找不到有关此主题的任何文档(我理解)。
【问题讨论】:
标签: c++ boost boost-graph