Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ deque의 emplace_back() 함수란? 문법과 사용 예제 총정리

C++ deque의 emplace_back() 함수란?

C++ STL(표준 템플릿 라이브러리)에서 제공하는 emplace_back() 함수는 deque(덱) 컨테이너의 맨 끝에 새로운 요소를 삽입할 때 사용하는 멤버 함수입니다. 이 함수는 기존 객체를 복사하거나 이동하는 대신 전달된 인자를 활용해 컨테이너 내부에서 요소를 직접 생성(in-place construction)하기 때문에, 특히 객체 타입을 다룰 때 push_back()보다 성능상 유리한 경우가 많습니다.

문법(Syntax)

dequename.emplace_back(value)

매개변수(Parameter)

value − deque의 맨 끝에 삽입할 요소를 지정합니다. 이때 삽입할 값의 자료형은 반드시 deque가 선언될 때 사용된 자료형과 동일해야 합니다.

예제

입력 Deque − 11 12 13 14 15

출력 New Deque − 11 12 13 14 15 16

입력 Deque − M O M E N T

출력 New Deque − M O M E N T S

구현 절차

  • 먼저 deque를 선언하고 초기화합니다.

  • 초기 상태의 deque를 화면에 출력합니다.

  • emplace_back() 함수를 호출하면서 새로운 요소를 매개변수로 전달합니다.

  • 새 요소가 삽입된 이후의 deque를 출력합니다.

위 절차를 따르면 deque의 끝에 새로운 요소를 간단하게 추가할 수 있습니다. 함수 호출 시 새로운 요소를 매개변수로 넘겨주며, 이 요소는 반드시 deque와 같은 자료형이어야 한다는 점에 유의해야 합니다.

예제 코드

// deque emplace_back() 함수의 동작을 보여주는 C++ 코드
#include <iostream>
#include <deque>
using namespace std;

int main() {
    // deque 초기화
    deque<int> dq = { 14, 15, 16, 17, 18 };
    cout << "Deque: ";
    for (auto x = dq.begin(); x != dq.end(); ++x)
        cout << *x << " ";

    // emplace_back() 함수 호출
    dq.emplace_back(19);

    // 새 요소 삽입 후 deque 출력
    cout << "\nNew deque: ";
    for (auto x = dq.begin(); x != dq.end(); ++x)
        cout << *x << " ";
    return 0;
}

출력 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Deque: 14 15 16 17 18
New deque: 14 15 16 17 18 19

emplace_back()과 push_back()의 차이점

push_back()은 이미 생성된 객체를 복사하거나 이동시켜 컨테이너에 추가하는 방식입니다. 반면 emplace_back()은 전달받은 인자를 사용해 컨테이너 내부에서 객체를 직접 생성하므로 불필요한 복사 연산이 줄어듭니다. 따라서 클래스나 구조체처럼 생성 비용이 큰 타입을 자주 삽입해야 하는 상황이라면 emplace_back()을 사용하는 것이 더 효율적입니다.