언어/C++

resize(), reserve() shrink_to_fit()

SYeonni 2021. 12. 6. 16:02

vector의 메모리 예약

> 재할당 및 복사의 연산을 줄이고, 필요한 만큼만 예약하여 사용하는 방법

 

 

reserve() 공간예약

>>필요 없이 메모리가 재할당 되는 것을 방지

재할당 횟수 를 최소화 해주면서 컨테이너 용량을 최소 n크기 만큼 잡아놓고 쓰기 때문에 

그 용량을 넘지 않는 이상 재할당을 발생하지 않는다.

 

resize() 공간예약 + 안의 모든 공간을 특정한 값으로 채운다. 

>> 컨테이너 개수를 무조건 n으로 맞추고 더 넣거나 넣지 않거나 하더라도 size()는 무조건 

n개로 설정된다. 할당된 개수보다 요소가 더 많을 경우 끝에 있는 요소는 버려진다.

 

shrink_to_fit()

>> 여분의 메모리 공간을 해제하는 용도. 백터의 용량이 백터 크기와 같게 설정된다.

백터 크기가 더 이상 변경되지 않을 때 사용하면 유용한다. 

 

 

참고 블로그

vector resize()와 reserve()의 차이점 C++ :: SpiritLink (tistory.com)

 

vector resize()와 reserve()의 차이점 C++

reserve()는 공간이 예약된다. 배열을 만들때 int array[크기] 하는것과 같다. 만약 앞으로 데이터가 자주 추가된다면 벡터가 가득 찼을때 스스로 공간을 늘리지 않기 때문에 성능을 더 향상할 수 있

spiritlink.tistory.com

https://computer-science-student.tistory.com/84

 

[c++] std::vector의 reserve(), resize(), shrink_to_fit() 함수

reserve(n) 함수 reserve 함수는 필요 없이 메모리가 재할당 되는 것을 방지한다. 이 함수를 사용함으로 인해 재할당 횟수 를 최소화 시켜준다. 컨테이너 용량을 최소 n크기 만큼 잡아놓고 쓰기 때문

computer-science-student.tistory.com

 

728x90