push_back과 emplace_back의 차이
push_back 함수는 객체를 집어 넣는 형식으로, 객체가 없이 삽입을 하려면 복사를 할 객체가 필요합니다. vector vt item a; // 기본 생성자 호출 vt.push_back(item("abc,1,234)); // vector내에서 또 생성자 호출 vt.push_back(std::move(a)); 이래서 넣을때 기본적으로 생성자를 두번 호출한다. emplace_back 함수는 함수 호출할 때 생성자가 필요한 인자를 받은후 함수내에서 객체를 생성해 삽입한다. vector vt vt.emplace_back("abc",1,234); // 생성자 호출 생성자는 한번만 호출되게 된다. 기본적으로 emplace_back이 속도가 더 빠르니 emplace_back을 이용하자
c++
2019. 12. 4. 19:09