push_back
‘객체’를 집어넣는 형식, 즉 객체 없이 삽입하려면 임시 객체가 있어야 함.
사용과정
emplace_back
c++11 에서 도입된 함수, 가변인자 템플릿을 사용하여 객체 생성에 필요한 인자만 받은 후 함수 내에서 객체를 생성하여 삽입하는 방식, c++17이후에는 참조도 반환
사용방법
임시 객체를 만들 필요가 없기 때문에, emplace_back 내부에서 삽입에 필요한 생성자 한번만 호출 됩니다.
push_back 과 emplace_back 사용은 상황에 따라 다른 것이다. 뭐가 더 좋다는 것은 틀린 말이다.
emplace_back은 push_back에 비해 빠르지만 객체를 외부에서 생성하는 것이 아니라 위험할 수 있다. 축소변환, 암시적인 변환에 대해 막기가 힘이든다. 컴파일상에서는 문제가 없지만 런타임에서 의도치 않은 에러가 발생할 수 있다.