list,deque,vector 에 사용가능한 멤버 함수 c++11 에 처음 추가 되었으며
가변인자 템플릿을 인자로 받는다
인자로는 vector 의 instance / class 인 경우 생성자를 넣어 주어야 한다
emplace_back 의 경우 일반 push_back 과 다르게 vector 로 복사되는 흐름이 아닌
vector 에 element 가 생기는 동시에 초기값을 넣어주게되어 복사가 일어나거나 임시객체가 생성되지 않아 좀더 빠른 코드
#include <vector> void function() { vector<int> intVector; intVector.emplace_back(1); printf("%d"), intVector.rbegin()); }
c++17 이후의 return value 는 해당 emplace_back 으로 추가된 element 의 reference 를 반환 하게 되며
이전 버전 코드에서 부자연 스럽게 작성되던 코드가 좀더 자연스럽게 되었다
#include <vector> void function() { vector<int> intVector; auto& ref = intVector.emplace_back(1); printf("%d"), ref); }
또하나 다른점은 17 이후에 reference 를 return 하다가 c++20 이후의 return 의 경우 constexpr reference return 으로 변경 되었다
댓글 남기기