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
。这样,如果您以后决定使用不同的数据结构,就不必更改代码。
有关不同 EdgeList
和 VertexList
数据类型以及每种数据类型的 pros/cons 的详细信息,请参阅 Using Adjacency List 页面。
在 Boost 图形库中,什么时候应该使用 顶点描述符,什么时候应该使用 index?由于vertex_descriptor
的实现实际上是无符号整数,所以这两个东西的值是一样的吗?
当您使用向量(或类似的)作为顶点的基础数据结构时,vertex_descriptor
只是一个索引(即 boost::vecS
)。如果您使用不同的底层数据结构,则顶点描述符不一定是索引。例如,如果您使用 std::list
/boost::listS
- 列表不使用 index-based 访问方法。相反,每个 vertex_descriptor
将成为指向列表项的指针。
因此,每次要引用图中的顶点时,都应使用 vertex_descriptor
。这样,如果您以后决定使用不同的数据结构,就不必更改代码。
有关不同 EdgeList
和 VertexList
数据类型以及每种数据类型的 pros/cons 的详细信息,请参阅 Using Adjacency List 页面。