emplace_back 을 사용하자
emplace_back
은 c++11 에 추가된 std::vector 의 멤버함수다.
보통 vector 에 값을 넣을 때, 아래와 같이 push_back
을 사용할 것이다.
1 | std::vector<std::string> strList; |
위와 같이 작성하는 것이 일반적이지만 성능 측면에서 봤을 때 emplace_back
을 사용하는 것이 훨씬 효과적이다.
1 | std::vector<std::string> strList; |
push_back
을 사용할 때는 vector 에 값을 넣기 위해 바깥에서 임시 객체의 생성자 / 소멸자가 호출되고 vector 내부에 복사되는 과정에서 또 객체가 한번 더 생성이 되지만,emplace_back
을 사용하면, 생성자의 인자 value 들만 전달해주면 vector 내부에서 한번만 객체 생성을 한다.
거의 대부분의 경우에서 emplace_back
을 사용하는 경우의 속도가 더 빠르고 push_back
을 완벽히 대체할 수 있어서 emplace_back
사용을 권장한다고 한다. 프로젝트에서 C++11 이상을 사용한다면 emplace_back
사용을 고려해보자.