我还有一个关于Boost图形库的问题,我无法通过Google搜索或阅读文档来回答自己。这与我的其他问题没有直接关系,所以我想我最好开始一个新线程。BGL:我如何直接访问节点和边的数据?
我有一个邻接布局的图形,并使用绑定的属性来访问节点和边的数据。为了方便起见,我在Graph中使用了typedef。因此,我可以访问存储的数据,例如用于vertex_descriptor的,通过输入这样的事情:
Graph[my_vertex_descriptor].setX(4);
Graph[my_vertex_descriptor].setY(10);
现在我想以定义与数据存储对象的引用,以便能够键入类似的东西:
typedef Graph[vertex_descriptor]::type Vertex;
Vertex v = Graph[my_vertex_descriptor];
v.setX(4);
v.setY(10);
通过这种或我试图避免不必要地重新计算通过使用映射的[]operator
和特定描述符对象来访问的映射值的类似方法。我的顶点和边缘包含大量数据,所以在某些情况下,我当前的代码会产生许多相同值的重新计算来处理这些数据。这似乎很难看。
有谁知道是否有可能实现我想要做的?
上面实际上应该是: `Bundled_vertex_property prop_v = GET(vertex_bundle,my_graph,vertex_descriptor的)`` Bundled_edge_property prop_e = GET(edge_bundle,my_graph,vertex_descriptor的)` 还要注意的是`edge_bundle`和`vertex_bundle`不是变量,它们是预定义的描述符。 – 2012-11-18 00:40:51