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

cnt*_*swj 12 c++ boost boost-graph

在Boost图库中,何时应该使用顶点描述符和何时使用索引?既然执行vertex_descriptor实际上是无符号整数,那么这两个东西是否具有相同的值?

ajs*_*ort 20

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

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

有关不同EdgeListVertexList数据类型以及每种类型的优缺点的更多信息,请参阅使用邻接列表页面.