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만큼 연속되어서 늘어난다고 생각하는게 맞을까요?

조회수 64


Kakao codefestival banner

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

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