지도가 정렬 될 준비가되어 있지 않으며 신속하고 무작위적인 키 액세스를 위해 많이 최적화되어 있습니다. 실제로 std :: sort를 지원하지 않습니다.출력하기 전에 값으로 std :: map 정렬하기 및 파기
내 현재의 문제는 난 그냥 값 (int)를 위해 10 쌍을 추출하고 그것을 파괴 할 필요가, 내가 더 이상 사용하지 않을거야
map<std::string,int>
전체
을 가지고있다.가능한 경우 가장 좋은 방법은 제자리에서 정렬 한 다음 10 번 반복하는 것이지만 분명히 해결책은 아닙니다.
(중복 키를 허용하기 위해) 여러 가지 방법을 시도하고 있지만 가능한 경우 stl 알고리즘을 사용하는 좀 더 세련된 솔루션이 있는지 알고 싶습니다.
편집 : 나는지도로 필요로하는 시간의 99 %를, 빠른 키 조회 값을 증가시키기 때문에지도를 사용하고
. 더 이상지도가 필요하지 않을 때 가치있는 순서로 나중에 추출하는 좋은 방법이 필요합니다.
현재 접근 방식이 될 whould :
- 표준 : : 벡터 (쌍 (표준 : : 문자열, INT))
- 정렬 벡터에지도 (표준 : : 문자열, int)를 복사 내부적 균형 비나을 사용하기 때문에
- 은지도 반복자를 사용하여 반복하는 경우
- 벡터를 파괴하고
귀하의 요구 사항은 저에게 매우 불분명합니다. IIUC, 당신은지도에서 키 대신 그들의 가치 _를 통해 10 개의 항목을 찾아야합니까? 그리고 일단 당신이 그들을 갖게되면, 당신은 그들과 무엇을 할 것입니까? 왜냐하면 "파괴"는 애매한 용어이고'std :: pair '의 의미를 추측 할 수 없기 때문입니다. 지도에서 삭제 되나요? (당신이지도를 더 이상 필요로하지 않는다고 말했기 때문에 아마도 그렇지 않다.) 그 밖의 무엇입니까? –
sbi
지도가 파괴되어 나중에 어떤 일이 일어나 든 상관 없으므로 그 10 개의 값을 가져야합니다. –