std::벡터 크기 조정: 초과 용량 자르기
질문: std::벡터 크기를 어떻게 줄일 수 있나요? 사용하지 않는 공간을 회수하고 용량을 줄이려면?
답변: std::Vector를 현재 크기로 축소하려면 Scott Meyers가 Effective STL에서 권장하는 "스왑 트릭"을 활용할 수 있습니다( 항목 17). 작동 방식은 다음과 같습니다.
1. 임시 벡터 생성:
원래 벡터와 동일한 데이터 유형을 사용하여 임시 std::벡터를 생성합니다.
<code class="cpp">vector<Person> temp(persons); // Assuming 'persons' is the original vector</code>
2. 벡터 교체:
swap() 함수를 사용하여 원래 벡터를 임시 벡터로 교체합니다.
<code class="cpp">persons.swap(temp);</code>
설명:
std::Vector 복사 생성자는 복사되는 요소의 필요한 수에 대해서만 메모리를 할당합니다. 벡터를 교환하면 기본적으로 원본 벡터의 현재 크기에 맞는 새 벡터가 생성됩니다. 그런 다음 원본 벡터는 임시 벡터에서 새로 할당된 크기를 받아 초과 용량을 효과적으로 줄입니다.
이 접근 방식은 효율적이며 개별 요소를 복사하지 않습니다. 이는 상수 시간 작업인 스왑 작업에 의존합니다.
위 내용은 `std::Vector`의 용량을 줄이는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!