我正在使用捆绑属性来绘制图表 . 定义如下:
class Node
{
void AssignPlane(Plane& p)
Plane* dp;
double errors;
}
void Node::AssignPlane(Plane& p)
{
dp=&p;
errors=p.a+p.b+p.c;// simplified
}
typedef adjacency_list<vecS,vecS,bidirectionalS,Node,float> NGraph;
//...
struct NVisitor: default_bfs_visitor
{
void discover_vertex(VertexDesc u, const NGraph& g) const
{
// CAN'T MODIFY G
}
}
但我不能简单地调用g [u] .AssignPlane(p)修改顶点,也不能得到指向顶点的指针,这对我来说都是至关重要的 .
虽然这个问题可能看起来很愚蠢,作为Boost的新手,并且已经花了两周的时间来适应Boost代码的复杂风格,但我真的需要帮助 .
请不要试图回答"You need to use something other than BGL",因为除了BGL之外我什么都找不到支持我的工作 .
我还必须说,官方文件并不是要以更简单的方式解释他们的伟大工作 . 由于我已经阅读了几十次文档,所以不建议我重新阅读文档 .
我将感谢任何有用的帮助,并提前谢谢你 .
2 回答
你可以让这些字段变得可变
否则,请考虑对访问者内部的图表保持非const“引用”:
注意不要破坏BFS的不变量(比如,在遍历时不要编辑边) .
你看过活动访客了吗?
在这个例子中,看起来图形是通过非const引用传入的:
Depth-First Search Event Visitor
Boost Event Visitors