我希望在没有print_edges()或print_graph()函数的情况下,是否还有其他方式使用print_edges ()。
在链接这里中,似乎只有当调用打印图形或打印边缘函数时,过滤器才能在每个节点上工作。
我确实理解,当谓词被打印到std::cout时,它作用于图的每个节点或边缘。
还有别的办法吗,我可以用它吗?我可以使用for_each( begin_iter,end_iter )或类似的东西吗?请建议一下。
发布于 2014-01-22 01:57:57
您可以在定义了大量迭代器宏的情况下使用#include <boost/graph/graph_utility.hpp>:BGL_FORALL_EDGES、BGL_FORALL_VERTICES、BGL_FORALL_OUTEDGES等。
典型的代码可能如下所示:
BGL_FORALL_VERTICES(src, g, MyGraph_t )
{
BGL_FORALL_OUTEDGES(src, ed, g, MyGraph_t )
{
MyGraph_t::vertex_descriptor tgt = target(ed, g);
... do something ...
}
}无论MyGraph_t是filtered_graph还是adjacency_list,还是任何其他BGL图形类型,该代码都能工作。
https://stackoverflow.com/questions/21263667
复制相似问题