이러저런 이야기

[STL Vector] push_back과 emplace_back의 차이

ck 3학년 2019. 11. 29. 18:20

 

Push_back은 인자로 필요한 객체를 생성 후  Push_back 함수 내부에서 다시 한번 복사가 일어난 뒤 Push_back이 끝날 때 인자들과 객체가 파괴된다. 즉 객체를 하나 추가할 때 쓸데없이 2번 복사하고 파괴한다.

참조 링크 : https://m.blog.naver.com/sorkelf/220825930008

 

std::vector embrace_back 과 push_back의 차이 (The difference between emplace_back and push_back in a std::vector container)

emplace_back 과 push_back의 차이를 알아 보기 이전에 L-Rvalue라는 개념을 알아야 한다.Before unders...

blog.naver.com

emplace_back은 push_back 같이 vector의 요소 끝에 원소를 추가하는 함수이다. 두 함수의 가장 큰 차이점은, push_back은 삽입할 객체를 받아 임시 객체를 만들고 push_back 내부에서 복사가 일어난 뒤 vector vector에 추가를 한다. emplace_back은 삽입할 객체의 생성자를 위한 인자들을 받아 std::vector 내에서 직접 객체를 생성하여 삽입하므로 임시 객체의 생성과 파괴, 복사(혹은 move)를 하지 않아도 되어 성능상 유리하다는 것이다. 즉 emplace_back은 객체를 추가할 때 std::vector 내에서 직접 객체를 추가하고, push_back은 임시 객체를 생성 후 push_back 함수 내부에서 객체 추가를 위해 복사를 한 뒤 객체 추가를 한다.

 

참조 링크: https://shaeod.tistory.com/630

 

[C++ STL] std::vector - emplace_back

※ 요약 std::vector의 멤버 함수인 emplace_back은 C++11부터 추가된 멤버 함수로써 push_back과 같이 vector의 요소 끝에 원소를 추가하는 함수이다. 두 함수의 가장 큰 차이점은, push_back과 같은 삽입 함수..

shaeod.tistory.com