배경 : 나는 숙제로 게임을 끝냈다. 우리는 16 진수의 경기를해야했습니다. 노드의 2 차원 벡터를 사용하여 보드를 구현하기로 결정하고 노드의 이웃의 x와 y 좌표를 추적하기 위해 2 개의 벡터를 사용했습니다. 승자를 결정하는 데 사용 된 경로 찾기 알고리즘은 Dijkstra의 알고리즘과 유사합니다.(쌍의 벡터) 대 (벡터 쌍) C++
2 개의 벡터를 사용할 때의 단점은 항상 동기화되어야한다는 것입니다. 그러나 속도에 관해 묻습니다. 또한 보드를 구현하는 더 빠른 방법은 아마 1d 벡터를 사용하는 것임을 깨달았습니다.
질문 : 원시 속도와 관련하여 경로 찾기 알고리즘은 2 벡터로 (x, y)를 추적하는 것이 더 빠르지 않습니까? 아니면 쌍의 벡터를 사용하여 구현하면 알고리즘이 더 빨리 실행됩니까?
이런 종류의 질문은 작은 자체 포함 코드 샘플을 제시 할 때 가장 잘 대답 할 수 있습니다. 그리고 그 때까지는 자신의 벤치 마크를 구축하는 데 90 % 이상 걸릴 것입니다. – DavidO
나는 과거에 이런 식으로 해 봤는데'(x, y)'와 같이 쌍을 걱정하는 대신 단순히 쌍을 정수'(x * Number_Of_rows + y)'로 변환하기 만하면됩니다. 보드상의 개별 위치. 이웃 노드는 유사한 방식으로 저장됩니다. 각 노드는 이웃들의'std :: list'을 저장할 것입니다. –
smac89
아마도 여러분은 http://stackoverflow.com/questions/7274268/which-is-faster-vector-of를 읽고 싶을 것입니다. -structs-or-a-number of of vectors 무겁게 읽었을지라도, 구현의 향상 문서는 Djikstra에 대한 많은 통찰력을 제공 할 수 있습니다. http://www.boost.org/doc/libs/1_55_0/libs /graph/doc/dijkstra_shortest_paths.html –