带有索引的 Boost Graph 边

kir*_*olo 0 c++ boost-graph

我正在尝试从一组对 (int,int) 边(其中每个 int 代表一个顶点索引)中定义一个具有无向边的图。每个这样的边都有自己的索引。

问题是我希望图的内部顶点索引与原始顶点索引一致。我还希望能够从边缘描述符中提取原始边缘索引。

http://www.boost.org/doc/libs/1_47_0/libs/graph/doc/using_property_maps.html外部属性部分)我明白我应该使用以下图形类型:

typedef adjacency_list<vecS, vecS, udirectedS, 
no_property, property<edge_index_t, std::size_t> > Graph;
Run Code Online (Sandbox Code Playgroud)

不幸的是,没有关于如何使用 edge_index_t 属性的解释。

很明显,我可以只使用 map(pair(int,int),int) 但我正在寻找一个更优雅的面向提升的解决方案。

谢谢你,基里尔

Eug*_*ene 5

由于您使用向量来定义顶点集合,因此顶点索引和顶点描述符之间存在一一对应关系。您只需要按如下方式定义图形对象:

Graph g(N);
Run Code Online (Sandbox Code Playgroud)

其中 N 是顶点数。这分配了 N 个顶点,每个顶点描述符是一个从 0 到 N-1 的数字。

从边缘获得边缘指标描述符,你可以使用get函数: get(edge_index, g, edge_descriptor);。您可以从函数返回的迭代器中获取的边描述符adjacent_vertices(v, g)

希望它是你的意思。