posted by REDFORCE 2017. 3. 23. 07:30

목차


1. Auto

2. range based for

3. enum class

4. non-static data member initializers

5. initializer lists

6. default / delete definition

7. override / final

8. emplacement

9. constexpr

10. lambda

11. random

12. thread



2. emplacement


이번 글은 emplacement에 대해서 정리해보도록 하겠습니다.


emplacement를 간단히 설명해보자면


  • 오브젝트 생성과 컨테이너 추가를 한 번에 할 수 있다.
  • STL의 대부분의 컨테이너에서 지원
    • 요소의 생성자 인수를 받아서 컨테이너 내에서 오브젝트를 만든다.
    • push_back() -> emplace_back()
    • push_front() -> emplace_front()
    • insert() -> emplace()

  • push_back 에 비해 요소 추가 비용을 줄일 수 있다.
    • 임시 오브젝트의 복사와 파괴 비용이 발생하지 않는다.


보시다시피 사용 방법은 기존 push_back 이나 insert와 동일하다.


다만 push_back이나 insert의 경우 내부적으로 값 복사가 발생하여 비용이 들었으나


emplace_back이나 emplace를 이용하면 값 복사 현상이 없어져서 더 적은 비용으로 기능을 수행할 수 있다!




어..나는 값 복사가 일어나는게 필요한대?


라고 한다면 기존 push_back이나 insert를 쓰면 된다.