Boost Graph Library 中的顶点描述符和索引有什么区别?

What's the difference between vertex descriptor and index in Boost Graph Library?

在 Boost 图形库中,什么时候应该使用 顶点描述符,什么时候应该使用 index?由于vertex_descriptor的实现实际上是无符号整数,所以这两个东西的值是一样的吗?

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

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

有关不同 EdgeListVertexList 数据类型以及每种数据类型的 pros/cons 的详细信息,请参阅 Using Adjacency List 页面。