이전에 질문한 이 질문은 많은 프로그래머가 std로 작업할 때 직면하는 특정 문제를 해결합니다. ::벡터. 벡터의 용량을 줄여 내용을 줄인 후 초과 메모리 할당을 줄이는 방법을 모색합니다.
답변:
제안된 권장 솔루션 Scott Meyers의 Effective STL(항목 17)에서는 초과 용량을 줄이기 위해 "스왑 트릭"을 사용하는 것입니다. 이 방법에는 원하는 감소된 용량으로 새 벡터를 생성하고 해당 내용을 원본 벡터와 교환하는 작업이 포함됩니다.
<code class="cpp">vector<Person>(persons).swap(persons);</code>
이 교환을 수행한 후 이제 비어 있는 원본 벡터의 할당이 취소되고 새 복사본이 생성됩니다. 현재 콘텐츠에 완벽하게 맞는 감소된 용량으로 그 자리를 대신할 것입니다.
기본 원칙:
이 기술은 벡터 복사 생성자의 주요 측면을 활용합니다. 행동. 벡터에서 요소를 복사할 때 새 벡터는 원본 벡터의 용량에 관계없이 복사된 요소를 수용할 만큼 충분한 메모리만 할당합니다. 축소된 새 벡터를 원본 벡터와 교체함으로써 초과 용량이 효과적으로 줄어듭니다.
위 내용은 `std::벡터`의 용량을 줄이는 방법: \'스왑 트릭\' 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!