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를 쓰면 된다.
'Programming > C++' 카테고리의 다른 글
[10편] Modern C++ 정리: lambda (3) | 2017.03.23 |
---|---|
[9편] Modern C++ 정리: constexpr (0) | 2017.03.23 |
[7편] Modern C++정리: override / final (0) | 2017.03.23 |
[6편] Modern C++정리: dafault / delete definition (0) | 2017.03.22 |
[4-5편] Modern C++정리: non-static data member initializers (0) | 2017.03.22 |