>백엔드 개발 >C++ >`std::벡터`의 용량을 줄이는 방법: \'스왑 트릭\' 설명

`std::벡터`의 용량을 줄이는 방법: \'스왑 트릭\' 설명

Barbara Streisand
Barbara Streisand원래의
2024-10-26 15:58:30246검색

How to Shrink a `std::vector`'s Capacity: The

std::Vector의 용량을 줄이는 방법

이전에 질문한 이 질문은 많은 프로그래머가 std로 작업할 때 직면하는 특정 문제를 해결합니다. ::벡터. 벡터의 용량을 줄여 내용을 줄인 후 초과 메모리 할당을 줄이는 방법을 모색합니다.

답변:

제안된 권장 솔루션 Scott Meyers의 Effective STL(항목 17)에서는 초과 용량을 줄이기 위해 "스왑 트릭"을 사용하는 것입니다. 이 방법에는 원하는 감소된 용량으로 새 벡터를 생성하고 해당 내용을 원본 벡터와 교환하는 작업이 포함됩니다.

<code class="cpp">vector<Person>(persons).swap(persons);</code>

이 교환을 수행한 후 이제 비어 있는 원본 벡터의 할당이 취소되고 새 복사본이 생성됩니다. 현재 콘텐츠에 완벽하게 맞는 감소된 용량으로 그 자리를 대신할 것입니다.

기본 원칙:

이 기술은 벡터 복사 생성자의 주요 측면을 활용합니다. 행동. 벡터에서 요소를 복사할 때 새 벡터는 원본 벡터의 용량에 관계없이 복사된 요소를 수용할 만큼 충분한 메모리만 할당합니다. 축소된 새 벡터를 원본 벡터와 교체함으로써 초과 용량이 효과적으로 줄어듭니다.

위 내용은 `std::벡터`의 용량을 줄이는 방법: \'스왑 트릭\' 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.