【发布时间】:2014-10-21 20:40:08
【问题描述】:
我正在学习使用 Boost Graph Library。我已经定义了一个自定义结构来存储有关顶点的信息,如下所示:Modifying vertex properties in a Boost::Graph。
struct VertexProperties {
int attribute1;
string attribute2;
};
typedef adjacency_list<vecS, vecS, directedS, VertexProperties, no_property> Graph;
我可以像这样迭代图顶点并修改它们的属性:
for (int i = 0; i < num_vertices(g); i++)
{
g[i].attribute1 = 123;
g[i].attribute2 = "123";
}
但是当我只有一个顶点迭代器时,我如何真正获得这些属性(即 VertexProperties 的相应实例)?
GraphTraits::vertex_iterator vert_i, vert_end;
for (tie(vert_i, vert_end) = vertices(g); vert_i != vert_end; ++vert_i){
//how do i get to "vert_i.attribute1" ?
}
同样的问题也适用于边和边迭代器。这应该很容易,但我似乎无法在 BGL 文档或其他任何地方找到它。
感谢您的帮助。
【问题讨论】:
-
g[*vert_i].attribute1? -
不,我已经尝试过了。不工作。