push_back 은 생성된 객체를 넣고, emplace_back 은 정보를 받아 함수 내에서 객체를 생성하여 넣는다.
push_back 은 이동 생성자를 호출하고 emplace_back은 호출하지 않는다.
emplace_back 을 사용하면 불필요한 객체 생성을 줄일 수 있는 장점이 있지만, 정보만 넣는 특성상 과정이 생략되어져
의도치 않은 결과를 가져올 수 있다. 이러한 결과들은 컴파일러가 잡아주지 않기 때문에 위험하다.
객체를 이동하는 비용이 커질 경우에는 emplace_back 을 사용하여 이동 생성자 호출을 막는 것이 좋다.
실수 및 확실히 알아보기 힘든 코드의 경우에는 push_back 을 사용하여 에러를 방지하는 것이 좋다.
'Cpp' 카테고리의 다른 글
재귀 함수 (0) | 2024.04.22 |
---|---|
래퍼 함수 (0) | 2024.04.22 |
move (0) | 2024.04.02 |
클래스의 기본 메소드 6가지 정리 (0) | 2024.04.02 |
템플릿(template) (0) | 2023.06.20 |