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 객체를 벡터로 이동시킬 것이다.