2012-06-24 5 views
0

2 차원 색인 점에 대한 저장소를 찾고 있습니다. 더 많은 것을 이기 위하여, 나는 OpenStreetMap 에있는 방법 (또는 가장자리)의 기하학을 저장하고 그것을 검색 가능하게하고 싶으면. 저장소에 대한 쿼리는 길의 두 끝점을 기반으로 형상을 검색합니다. 이 쿼리는 Dijkstra와 유사한 알고리즘을 통해 이라는 경로의 지오메트리를 재구성하여 실행하므로 지오메트리 검색 속도가 중요합니다.stxxl map <int, string>

내 경우 엔 노드가 부호없는 int이고 지오메트리가 문자열 또는 으로 인코딩 될 수 있습니다. 어느 방법을 사용해도 작동합니다.

노드의 수는 약 10 억 개이므로 메모리에있는 모든 것을 유지하면 작동하지 않으므로 외부 또는 디스크 기반 저장소를 찾는 것이 좋습니다.

나는 Stxxl을 이미 시도했지만 문자열이나 벡터와 같은 비 POD 유형을 지원하지 않는 것으로 보입니다. 사전

답변

0

에서 제안

덕분에 당신은 두 개의 벡터를 유지하여 행동 등의지도를 시뮬레이션 할 수 있습니다. 두 개의 <key, value> 쌍이 <0, "hello">, <1, "world">입니다. 첫 번째 vector (of char)은 다음 "world""hello" 다음에 오는 것을, 필요하지 않은 볼 수 있듯이

<0, 6>, <6, 12> 

,

h, e, l, l, o, \0, w, o, r, l, d, \0 

두 번째 vector (of pair of two 'size_type's)begin position이 같은 각 stringone past end position을 포함,이 포함되어 있습니다. 그런 식으로, (새로운 <key, value> 쌍에 대해, 당신은 단지 두 번째 벡터 (인덱스 액세스)에서 시작과 끝 위치을 업데이트, 당신은 끝에 첫 번째 벡터의에 값을 넣어 변화가 필요 없음).

편집 : vector (of pair of two 'size_type's) 대신 map< int, pair<size_type, size_type> >을 사용하면 더 나은 해결책을 얻을 수 있습니다. 골라보세요.

관련 문제