【问题标题】:Iterate over boost graph without Visitor在没有访问者的情况下迭代提升图
【发布时间】:2014-05-20 09:09:49
【问题描述】:

我需要遍历图 (DFS),但不使用标准 DFS 访问者回调技术。

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

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

【问题讨论】:

  • 等等,你想要 DFS 但不是 DFS?你只是说你不喜欢 BGL API?
  • 是的。我正在将 boost 集成到一些现有代码中,如果它以这种方式工作会简单得多。

标签: c++ boost graph boost-graph


【解决方案1】:

是的,根据具体的图表类型,您可以这样做

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

编辑更新 cmets:

你必须自己包装它。您可以使用 Boost Coroutine 强制拉取接口。或者,您可以使用访问者填充队列,在 DFS 完成后使用该队列。

【讨论】:

  • 感谢您的快速回复。但是我将如何以 DFS 顺序访问边缘?
  • 这个 DFS 怎么样?看起来它只是以没有特定顺序的方式迭代边缘。
  • @pbible 如果您查看对话,您会发现我说的正是。答案是,OP 必须自己写,因为 BGL 没有这样的 API
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-28
  • 1970-01-01
相关资源
最近更新 更多