Boost图库中顶点描述符和索引之间有什么区别?

时间:2016-01-04 05:14:25

标签: c++ boost boost-graph

在Boost图库中,何时应该使用顶点描述符以及何时使用 index ?由于vertex_descriptor的实现实际上是无符号整数,这两个东西是否具有相同的值?

1 个答案:

答案 0 :(得分:16)

当您使用向量(或类似)作为顶点的基础数据结构(即vertex_descriptor)时,boost::vecS只是一个索引。如果使用不同的底层数据结构,则顶点描述符不一定是索引。例如,如果您使用std::list / boost::listS - 列表不使用基于索引的访问方法。相反,每个vertex_descriptor将成为指向列表项的指针。

因此,每次要在图表中引用顶点时,都应使用vertex_descriptor。这样,如果您以后决定使用不同的数据结构,则无需更改代码。

有关不同EdgeListVertexList数据类型及其优缺点的详细信息,请参阅Using Adjacency List页。