비어있는 unordered_map을 만들면 버켓 수가 기본값으로 설정됩니다 (내 경우에는 11입니다). 그 후에 n이 꽤 큰 곳인 을 호출하면 즉각적으로 재촉됩니다. 큰 숫자를 넘겨주는 것이 좋습니다. (재 배열을 저장하기 위해 unordered_map의 생성자에 n을 예약하는 것이 좋습니다.) 이해가 잘못되면 나를 수정하십시오.나중에 예약하기 전에 수의 요소를 알고 있다면 생성자에서 버킷 수를 설정하는 것이 좋습니다.
1
A
답변
2
물론 ... 알고 계시다면 ... 얼마나 많은 요소를 가질 지, 생성자에게 알려주는 것이 좋습니다. 잠재적으로 유용하지 않으면 생성자는 인수를 사용할 수 없습니다. 제안 된 최소값이지만 힌트 일뿐입니다. 모든 표준 라이브러리는 다른 구현/설계 결정에 따라 2의 제곱 또는 소수로 반올림 한 후에이를 존중할 것입니다. 생성/인구의 향상된 속도의 균형을 맞추면 위험/비용이 유지 관리됩니다 : "힌트"가 실제 요구 사항과 일치하지 않게되면 메모리 낭비 또는 성능 저하로 끝날 수 있습니다 (예 :로드 팩터가 너무 낮 으면 캐시 페이지 히트가 줄어들 수 있음)