1. Push_back
=> 기능 : Vector의 요소 끝에 원소 추가
=> 작동 방법
-> 1. 삽입할 객체를 받음
-> 2. 임시 객체를 만듦(push_back 내에서)
-> 3. 임시 객체를 vector에 추가
-> 4. 임시 객체 소멸
=> 장점
-> 암시적인 생성자만 호출
-> 매개 변수가 호출 후에 유효하지 않은 객체를 참조할 시 좋음
-> 포인터를 변수로 사용할 시 등에서 안전함
=> 단점
-> 생성자와 소멸자가 두번씩 호출되어 성능 감소
2. Emplace
=> 기능 : Vector의 요소 끝에 원소 추가
=> 작동 방법
-> 1. 삽입할 객체를 받음
-> 2. vector 내에서 직접 객체 생성
=> 장점
-> 임시 객체의 생성/파괴/복사가 이루어지지않아 성능상 빠름(유리함)
=> 단점
-> 모든 유형의 생성자를 호출
-> 포인터 형식을 받았을 때, 생성자는 호출이 되나, 소멸자 시 delete가 되지 않아 오류가 발생함
-> 즉 쉽게이야기하면, 안전하지 않은 코드임
'C++ > Tips' 카테고리의 다른 글
깊은복사(Deep Copy) vs 얕은복사(Shallow Copy) (0) | 2021.05.31 |
---|---|
Call by value vs Call by reference (0) | 2021.05.28 |
[C/C++] #define , #undef (0) | 2021.03.23 |
[c/c++] 주석 (0) | 2021.03.16 |
[c++] namespace (0) | 2021.03.09 |