상세 컨텐츠

본문 제목

push_back과 emplace_back의 차이

c++

by 뿡뿡이형 2019. 12. 4. 19:09

본문

push_back 함수는 객체를 집어 넣는 형식으로, 객체가 없이 삽입을 하려면 복사를 할 객체가 필요합니다.

vector<item> vt

item a; // 기본 생성자 호출

vt.push_back(item("abc,1,234)); // vector내에서 또 생성자 호출

vt.push_back(std::move(a)); 

이래서 넣을때 기본적으로 생성자를 두번 호출한다.

emplace_back 함수는 함수 호출할 때 생성자가 필요한 인자를 받은후 함수내에서 객체를 생성해 삽입한다.

vector<item> vt

vt.emplace_back("abc",1,234); // 생성자 호출

생성자는 한번만 호출되게 된다.


기본적으로 emplace_back이 속도가 더 빠르니 emplace_back을 이용하자

'c++' 카테고리의 다른 글

[C++] 미리 컴파일된 헤더(precompiled Header)?  (0) 2019.08.31

관련글 더보기