BGL:是否可以使用C++11的范围在图的顶点上循环

BGL: Is it possible to use range for of C++11 to loop over the vertices of the graph?

本文关键字:顶点 循环 范围 BGL 是否 可以使 C++11      更新时间:2023-10-16

这个问题是关于Boost Graph Library的。

如何(如果可能的话)使用C++11的循环的范围在图的顶点上循环?

您可以,只需一点编码。

让我们首先回顾一下如何在bgl中访问图的顶点。如果图g实现了VertexListGraph概念,那么您可以调用vertices(g),它将返回一个std::pair<vertex_iterator, vertex_iterator>

现在,您不能使用一对作为范围,但boost有一个助手:迭代器_范围

未测试的示例代码:

for(auto& vertex : make_iterator_range(vertices(g)))

对于任何对象,只要该对象提供某种迭代器,就可以重载非成员std::beginstd::end。知道了这一点,任何对象都可以兼容基于范围的循环。