STL Vector의 Push Back 에 관련하여 질문 드려봅니다!


현재 벡터에 5개의 값이 들어가 있다고 가정을 해 봅시다.

따로 Reserve를 하지 않았을 때, 새로운 데이터를 Push Back 하는 상황이 왔습니다.

벡터의 Capacity 정책에 따르면 현재 데이터의 갯수가 5개니까 2로 나눈 몫인 2만큼의 공간을 할당하고, 그 새로 추가된 공간에 데이터를 Push Back 하게 될 것으로 알고 있습니다.

이 때, 면접관에게 저에게 했던 질문에 대한 대답이 궁금합니다.

첫 번째는 해당 데이터를 push back 할 때 그 값이 이동? 되는 것인지 복사? 되는 것인지에 대해 물어봤습니다.

단순히 생각해봐도 잘 답이 안나오더군요.. 저는 항상 그냥 이제 벡터에 값이 들어간다! 라고 생각하고 있었는데 원래 있던 데이터가 벡터에 복사되어서 들어가는지 아니면 이동? 하는지

사실 이동? 이라는 개념에 대해서도 잘 모르겠습니다. 그 데이터가 지역변수든 힙 영역에 있는 동적 할당된 변수든 벡터에 복사되어 들어가는게 맞는 걸까요?

코드로 풀어보자면 이런 상황이 될 것 같습니다. vector vecInt; for(int i=0; i<5; ++i) vecInt.pushback(i);

int a = 0; vecInt.pushback(a);

두 번째는 아까 제가 말했듯이 2개의 공간이 할당이 되는데 그게 어떤 식으로 뒤에 2개 붙는지 물어봤습니다. 재할당된다? 라는 표현을 썼던 것도 같은데 그게 대체 어떤 개념인지도 잘 모르겠습니다.

배열 처럼 int를 담는 vector면 메모리가 int의 size만큼 연속되어서 늘어난다고 생각하는게 맞을까요?

조회수 146


로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close