더북(TheBook)

2.3.5.1 원소를 추가하기

컨테이너 객체의 push_back() 함수로 순차열의 끝에 원소를 추가한다.

std::vector<double> values;
values.push_back(3.1415926);          // 벡터의 끝에 원소를 추가한다

push_back() 함수는 인수로 전달한 값, 여기서는 3.1415926을 원소들의 끝에 새 원소로 추가한다. 벡터에 원소가 하나도 없다면 추가한 원소가 첫 번째 원소가 된다. 이 경우에 컨테이너에서 reserve()를 호출한 적이 없다면 메모리 할당이 발생한다. push_back()의 두 번째 버전은 우측값 참조(rvalue reference) 매개변수를 사용한다. 이 버전은 원소 추가에 이동 연산을 한다.

std::vector<std::string> words;
words.push_back(string("adiabatic")); // string("adiabatic")을 벡터로 이동한다

여기서 push_back()에 사용한 인수는 임시 객체이므로 이 코드는 우측값 참조 매개변수 버전의 push_back()을 호출하게 된다. 물론, 다음과 같이 작성할 수도 있다.

words.push_back("adiabatic");         // string("adiabatic")을 벡터로 이동한다

컴파일러는 string 객체를 준비하고 초깃값 "adiabatic"으로 생성한 후에 앞 코드와 마찬가지로 생성한 string 객체를 벡터로 이동시킬 것이다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.