정글에서 온 개발자

1/20 TIL C++ emplace_back() 본문

TIL

1/20 TIL C++ emplace_back()

dev-diver 2025. 1. 20. 23:37

 결론적으로  push_back보다 빠르다.

vector, deque,list 등 컨테이너에는 push_back() 을 통해 끝에 요소를 추가할 수 있다.

emplace_back()은 괄호 안에 해당 컨테이너의 요소 생성자를 컨테이너 안에서 직접 호출하여 생성한다.
push_back()과 비교하면 더 이해가 되는데,  push_back은 밖에서 생성한 요소를 복사, 이동하는 형식을 취한다.

vector<pair<int,int>> vec;

pair temp = {1,2};
vec.push_back(temp); //복사

vec.push_back({3,4}); //이렇게 하더라도 외부에서 생성돼 복사된다.

그러나 emplace_back()은 vector 내부에서 생성하기 때문에 이동, 복사 과정이 없다.

vector<pair<int,int>> vec;

vec.push_back(2,3);