2013-07-11 3 views
1

빈 부스트 :: 그래프 g가 주어지면이 그래프의 정점 수를 설정하고 몇 개의 가장자리를 추가하려고합니다. 그러나 문서에서 관련 기능을 찾을 수 없습니다. 내가 발견 한 모든 예제는 초기화시 정점의 크기를 정의합니다 (Graph g (10)에서 10 개의 정점이있는 그래프를 정의 함). 그러나 그래프를 정의 할 때 크기를 알지 못합니다. 먼저 Graph g를 정의하고 나중에 크기를 설정하려고합니다.부스트에서 정점 수를 설정합니다. 그래프

답변

1

가장 간단한 방법은 원하는 각 정점에 대해 boost :: add_vertex (그래프) 메서드를 호출하는 것입니다. 여기

는 하나 꼭지점 하나를 추가 할 필요가 없습니다 Using C++ Boost's Graph Library

주를 시작하기에 좋은 장소입니다. 당신이 신경 쓰는 것이 가장자리라면, add_edge()는 누락 된 버텍스를 추가 할 것입니다.

+0

답장을 보내 주셔서 감사합니다. 문제는 5000 개의 정점을 추가해야 할 경우 add_vertex()를 5000 번 호출하지 않으려는 경우 매우 느릴 수 있다는 것입니다. – LittleSweet

+1

이 작업에 소요될 수있는 기간을 결정하십시오. 테스트 코드를 작성하십시오. 법안. 시간이 오래 걸리는 경우 코드 및 일부 측정 값을 사용하여 질문하십시오. – ravenspoint

+0

@ravenspoint LittleSweet에 동의합니다. 저는 프로파일 러를 실행했으며 그래프에 대한 메모리 할당이 런타임의 70 %를 차지하는 것으로 보입니다. 어쨌든 내가 추가 할 가장자리 수를 미리 할당 할 수 있습니까? –

2

당신은 아마 같은 약간 더러운 트릭을 시도 할 수 있습니다 : 필요한 경우

그것은 adjacency_list에 대한의 add_edge의 부작용을 이용
add_edge(0,4999,g); 
remove_edge(0,4999,g); 

, 즉, 사실 BGL은 정점의 벡터를 확장하는.

+0

나는 이것을 시험해보고'num_vertices (Graph)'로 검증했다. – Wiredchop

관련 문제