我需要迭代图(DFS),但不使用标准的DFS访问者回调技术。在没有访客的情况下遍历提升图
有没有办法以这种方式迭代遍历图?
for(each edge in my graph visited in dfs) {
do some complicated stuff;
}
我需要迭代图(DFS),但不使用标准的DFS访问者回调技术。在没有访客的情况下遍历提升图
有没有办法以这种方式迭代遍历图?
for(each edge in my graph visited in dfs) {
do some complicated stuff;
}
是的,这取决于具体的图表类型,你可以做
auto e = edges(g);
for (auto it = e.first; it != e.second; ++it)
{
}
如果你图模型不同的概念,你可能想in_edges(g)
或out_edges(g)
:http://www.boost.org/doc/libs/1_55_0/libs/graph/doc/graph_concepts.html
编辑更新到评论:
你必须自己包装它 然后。您可以使用Boost Coroutine强制使用拉式接口。或者您可以使用访问者填写队列,DFS完成后您将使用该队列。
等待,你想要DFS但不是DFS?你是否仅仅意味着你不喜欢BGL API? – sehe
是的。我将提升整合到一些现有的代码中,如果它以这种方式工作,它会简单得多。 – subzero