2014-01-21 1 views
0

print_edges() 또는 print_graph() 함수없이 boost :: filtered_graph()를 사용하는 다른 방법이 있으면 바랬습니다.print_graph()없이 boost filtered_graph 사용

링크 here의 경우 필터는 인쇄 그래프 또는 인쇄 가장자리 기능이 호출 될 때만 모든 노드에서 작동하는 것으로 보입니다.

내가이 수 std ::

COUT 인쇄하기 때 술어가 다른 방법이 있나요 그래프의 모든 노드 또는 가장자리에 작용 것을 이해한다, 나는 그것을 사용할 수 있을까? for_each (begin_iter, end_iter) 또는 이와 비슷한 것을 사용할 수 있습니까? 제발 제안 해주세요. 이 코드는 관계없이 MyGraph_t인지 여부를 작동

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 ... 
    } 
} 

: 당신의 전형적인 코드는 같이 할 수 BGL_FORALL_EDGES 등

BGL_FORALL_VERTICES, BGL_FORALL_OUTEDGES :

답변

1

당신은 #include <boost/graph/graph_utility.hpp> 반복자 매크로의 많음이 정의 사용할 수 있습니다 filtered_graph 또는 adjacency_list 또는 다른 BGL 그래프 유형.

+0

이 동의하지만, filtered_graph에 사용하는 술어에 대해 작동합니까? 예를 들어, fg (G, edge_predicate) -> fg는 G에 대해 가장자리 술어로 필터링 된 그래프입니다. 자, 어떻게 BGL_FORALL_XX()를 사용합니까 ?? .. 내 가장자리 술어는 그래프에서 가장자리로 입력을 받아 속성을 수정합니다. 인쇄 그래프가 호출되면 각 가장자리를지나 각 가장자리의 조건자를 호출합니다. 어떻게 BGL_FORALL_xxx를 사용하여 이것을 실현합니까 ?? – Pogo

+0

물론. 모든 BGL 그래프 유형에서 작동합니다. –

관련 문제