OK, 작업이 이렇게하면 -10^6에서 10^6까지 (x, y) 두 점 (x, y)이있는 점의 좌표가 주어집니다 . 나는 특정 지점이 있는지 여부를 확인해야한다. (x, y) 튜플이 나에게 주어 졌는지 아닌지. 간단히 말해서 특정 점 (2D)이 설정되었는지 여부에 대한 쿼리에 어떻게 대답합니까? 지금까지 내가 생각할 수있는 가장 좋은 점은 std::map<std::pair<int,int>, bool>
을 유지하는 것입니다. 포인트가 주어질 때마다 1로 표시됩니다. 로그 타임으로 실행되어야하고 쿼리에 응답하는 방법이 상당히 최적화되어 있지만 더 좋은 방법이 있는지 궁금합니다. 이.2D 점을 효율적으로 해싱 할 수 있습니다.
또한 위의 데이터 구조를 hash.I 사용하는 사람이 실제로 어떤 복잡 할 것이라고 말할 수 있다면 기쁠 것입니다. std::map
의 복잡성은 O (로그 N)이 될 것입니다. 열쇠의 구조에 관계없이 요소의 크기?
내 질문에 대한 답변을 얻은 지 오래되었습니다. 제발 바로 이것을 플래그하지 마라. ( –
'std : map'은 일반적으로 해쉬 테이블이 아닌 균형 이진 트리를 사용하여 구현된다. 당신이 요소들의 순서를 신경 쓰지 않는다면'std : unordered_map'을 사용할 수있다. 지도에서 (당신이하지 않는 것 같아요.) –
std :: unordered_map을 사용할 때 오류가 발생합니다. 제발 도와주세요 !! –