DAG를 반복하기 위해 깊이 우선 또는 너비 우선 탐색을 사용할 수 있습니다. 후자는 임시 큐가 필요합니다. 이러한 알고리즘에 대한 자세한 내용은 here 및 here을 참조하십시오.
물론 BOOST 그래프 데이터 구조는 꼭지점과 가장자리 반복자를 구현합니다 ... 링크의 "꼭지점 설정에 액세스하기"섹션에서 언급 한 verticies()
함수를 사용하여 모든 꼭지점을 반복 할 수 있습니다 당신이 가리켰다. 모든 vertifications를 간단한 순회하기위한 예제 코드는 아래 코드에 있습니다.
int main(int,char*[])
{
// ...
// get the property map for vertex indices
typedef property_map<Graph, vertex_index_t>::type IndexMap;
IndexMap index = get(vertex_index, g);
std::cout << "vertices(g) = ";
typedef graph_traits<Graph>::vertex_iterator vertex_iter;
std::pair<vertex_iter, vertex_iter> vp;
for (vp = vertices(g); vp.first != vp.second; ++vp.first) {
//***replace this code with your vector::push_back() code ***
std::cout << index[*vp.first] << " ";
}
std::cout << std::endl;
// ...
return 0;
}
정점과 벡터에 모두 'v'를 사용하고 있는지 혼란스러운 점이 있습니다. – interjay
오타 @interjay, 업데이트 됨! – gsamaras
Afaik, 상자에서 사용할 수있는 helper 함수가 없다. bgl의 엔티티와 관련된 모든 속성을 되돌려 준다. 비록 내가 덤프() 예제를 한번 보았지만 그것을하는 방법. 그러나 기본적으로 필요한 것은 "복사"하려는 각 정점에 대해 모든 내부 또는 외부 (또는 다른 종류의 연관된) 속성에 액세스하는 것입니다. 물론 정점 당 데이터를 저장하려는 저장소를 제공하는 것이 좋습니다. [부스트 속성 맵 라이브러리] (http://www.boost.org/doc/libs/1_56_0/libs/property_map/doc/property_map.html)에 대해 자세히 읽어보십시오. –