std::Vector::resize() 대 std::Vector::reserve()
C에서는 std:: 벡터는 동일한 유형의 요소를 저장하는 데 일반적으로 사용되는 컨테이너입니다. 메모리에서 서로 다른 역할을 하는 std::Vector::reserve() 및 std::Vector::resize()라는 두 가지 메서드를 제공합니다. Management.
std::Vector::reserve()
std::Vector::resize()
제공된 코드의 적용
주어진 샘플에서 코드에서 멤버 벡터 my_member는 처음에 std::Vector::reserve()를 사용하여 n_dim 요소에 대한 메모리를 할당합니다. 그러나 어떤 요소도 초기화되지 않으며 현재 논리적 크기(0)를 초과하는 요소에 액세스하면 정의되지 않은 동작이나 오류가 발생합니다.
벡터에 요소를 쓰려면 std::Vector::resize()를 사용해야 합니다. 사용된. 이 경우 벡터 크기를 n_dim으로 조정하고 모든 요소를 0으로 초기화합니다.
VS2010 SP1 동작
제공된 테스트 코드는 VS2010 SP1을 사용한 디버그 빌드에서 실패합니다. 논리적 크기가 0인 벡터의 요소 5에 액세스하려고 시도합니다. 이는 정의되지 않은 동작으로 간주되어 충돌이 발생합니다.
결론
제공된 정보에 따르면 요소를 작성해야 하는 경우 std::Vector::resize()를 사용하는 것이 옳습니다. 벡터. std::벡터::reserve()는 향후 삽입이 발생할 것으로 알려져 있고 이를 위해 메모리를 미리 예약해야 하지만 요소 값을 미리 초기화할 필요가 없는 경우 사용해야 합니다.
위 내용은 `std::벡터::reserve()` 대 `std::벡터::resize()`: 효율적인 메모리 관리를 위해 어느 것을 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!