프로그래밍 언어/C++ STL

STL의 vector, push_back()과 emplace_back()

뽀또치즈맛 2024. 11. 27. 00:03

push_back , emplace_back

 

둘의 공통점

push_back , emplace_back은

두 함수 모두 vector컨테이너가 주어졌을 때 한 칸을 늘리고 해당 값을 넣어주게 된다.

 

둘의 차이점

그러나 내부적으로 동작하는 것은 조금 다른데,

 

push_back의 경우

push_back의 경우 메모리를 이동하거나 임시 객체를 이용하여

임시객체가 생성되고 넣어준 뒤에 임시 객체가 삭제되는 호출이 있다.

-> 복사의 개념

 

emplace_back의 경우

대신 emplace_back은 받은 인수를 이용해 내부에서 생성자를 통한 객체 생성 후

추가를 하기 때문에 임시 객체의 생성, 파괴가 없어서 push_back보다 효율적일 수 있다.

-> 이동의 개념