unreal 5기

250916 언리얼엔진 본캠프 31일차 vector의 capacity와 size

parkjinnam 2025. 9. 16. 21:05

vector의 capacity와 size는 다르다

vector의 크기를 알아보는 방법은 크게 2가지가 있다. capacity, size가 그 예인데 이들이 단순하게 vector의 크기를 구해준다 라고 생각한다면 오답이다. 각 단어를 직역해서 생각해보자 capacity는 용량이라는 뜻을 가진 단어이며 size는 크기를 의미하는 단어이다. 만약 우리가 생각했던 대로 둘이 같은 동작을 한다면 굳이 다른 뜻을 가진 단어 두개로 나누어 만들었을리는 없을 것이다. vector에서 size는 vector의 유효한 요소의 개수를 의미한다. capacity는 vector에 할당된 전체적인 공간의 용량을 의한다. 즉 vector라는 가방에 전체적인 크기가 capacity이고 안에 들어있는 물건의 개수가 size가 되는것이다.

예를들어 push_back을 사용한다 생각해보자 capacity가 size보다 큰 상황이라면 capacity는 그대로인 채 size의 크기만 늘어날 것이다. 근데 capacity가 size와 같은 상황이라면 capacity가 새로운 연속된 공간을 할당하고 기존의 모든 요소들을 복사하면서 기존의 정보는 지우고 capacity가 size보다 큰 상황을 만들어 놓은 다음 맨 뒤에 요소를 복사해놓고 size가 커지는 과정이 일어나게 된다. 사실 이 이야기를 왜 하냐면 vector에 대해 공부하다가 어느 블로그 글을 통해서 공부하면서 reserve와 resize의 차이를 알게되었기 때문이다.

 

reserve

reserve는 capacity를 프로그래머가 원하는 크기로 할당 해준다. 즉 가방의 크기를 바꿔주는거다.

 

resize

resize는 지정한 수 만큼 요소를 만들어주며 내부에서 capacity가 작으면 재할당이 일어난다. 라고 설명하는 사람에게는 해당 블로거가 채점한다면 70점을 준다고 한다. 여기서 한가지 중요한 정보로는 증가되는 size만큼 복사생성자가 호출된다고 한다.

 

사실 아직 나는 이 내용에 대해서 구체적으로 깊이 파고들 수준은 되지않는것 같다. 혹시 이 미숙한 글을 보고도 이해가 가지 않으신 분들은 해당 블로그 링크를 남겨두었으니 해당 부분 참고 바란다. 이 내용을 마스터할 수 있도록 더욱 정진하겠다.

 

참고

YonMy » std::vector의 size와 capacity에 대해서 제대로 알고있자