파일 (약 500,000 개)에서 숫자를 읽고 데이터 구조에 삽입하는 프로그램을 작성했습니다. 숫자는 별개입니다. 내가. std::make_pair(myNumber, emptyStruct))
를 사용하여 다른 구조체 (와unordered_map에 삽입하는 데 너무 많은 시간이 걸립니다.
을 unordered_map
에 번호를 삽입하는거야 그리고 모든 숫자의 삽입 후, 나는 단지 몇 백의 배를 검색하는 데 사용하고 있습니다. 나는 때까지 DS를 삭제하지 프로그래밍이 끝났습니다.
프로파일 링이 끝나면 삽입 작업이 실행 시간의 약 50 %를 차지한다는 것을 알았습니다 (삽입과 같은 횟수만큼 실행되는 다른 코드도 있지만, t 시간이 많이 걸릴 것입니다.)
아마도 크기 조정에 시간이 걸릴 것으로 생각했기 때문에 500,000으로 예약 기능을 사용했지만 결과는 여전히 동일합니다.
내가 아는 한,이 DS는 O (1) 삽입 및 검색이되어야하며 (트레이드 오프는 대용량 메모리이므로) 삽입하기에 너무 많은 시간이 걸리는 이유는 알 수 없습니다. 결과를 어떻게 개선 할 수 있습니까?
각 삽입시 O (1) *입니다. n 삽입은 여전히 O (n)입니다. –
동의합니다. 그것은 합리적으로 보인다. 삽입은 비용이 많이 듭니다. 먼저 역으로 수행하는 방법 : 먼저 비교할 값을로드 한 다음 입력 파일로 이동하십시오. – dmg
음, 'unordered_map'에 50 % 부분을 가져와야하는 것 외에 다른 처리를 할 수 있습니다. "너무 많은 시간"은 정확히 얼마입니까? 지도에 50 만 개의 요소를 삽입하는 데 적절한 시간은 얼마나 될까요? – user2079303