2014-05-20 44 views
0

我需要迭代图(DFS),但不使用标准的DFS访问者回调技术。在没有访客的情况下遍历提升图

有没有办法以这种方式迭代遍历图?

for(each edge in my graph visited in dfs) { 
    do some complicated stuff; 
} 
+1

等待,你想要DFS但不是DFS?你是否仅仅意味着你不喜欢BGL API? – sehe

+0

是的。我将提升整合到一些现有的代码中,如果它以这种方式工作,它会简单得多。 – subzero

回答

0

是的,这取决于具体的图表类型,你可以做

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完成后您将使用该队列。

+0

感谢您的快速响应。但是,我将如何去访问DFS顺序中的边缘? – subzero

+0

我已更新我的回答 – sehe

+0

感谢您的帮助! – subzero

相关问题