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
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기