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

C++ STL deque::push_front() 함수 완벽 가이드

이 글에서는 C++ STL에서 deque::push_front() 함수의 동작 방식, 문법 그리고 다양한 예제를 통해 어떻게 활용되는지 자세히 알아보겠습니다.

덱(Deque)이란?

덱(Double Ended Queue)은 양쪽 끝에서 모두 확장과 축소가 가능한 시퀀스 컨테이너입니다. 일반적인 큐(Queue) 자료구조는 데이터를 뒤쪽(Rear)에만 삽입할 수 있고 앞쪽(Front)에서만 삭제할 수 있습니다. 버스 정류장의 줄을 예로 들어보면, 사람은 줄의 맨 뒤에만 새로 설 수 있으며 맨 앞에 서 있는 사람이 가장 먼저 탑승하게 됩니다.

반면 덱(Double Ended Queue)은 이름 그대로 양쪽 끝 모두에서 데이터의 삽입과 삭제가 가능한 자료구조입니다.

deque::push_front()란?

deque::push_front()는 C++ STL에 내장된 함수로, <deque> 헤더 파일에 선언되어 있습니다. 이 함수는 덱 컨테이너의 맨 앞(front)에 요소를 삽입하며, 새로 삽입된 요소는 덱의 첫 번째 요소가 됩니다.

이 함수는 매개변수를 하나만 받으며, 해당 매개변수는 덱의 시작 부분에 삽입할 요소입니다.

문법(Syntax)

mydeque.push_front(const value_type& value);

이 함수는 덱의 맨 앞에 삽입할 요소 하나를 매개변수로 받습니다.

반환 값(Return Value)

이 함수는 아무 값도 반환하지 않습니다(void).

예제 입력 및 출력

입력: deque<int> mydeque = {10, 20, 30, 40};
      mydeque.push_front(9);
출력:
      Deque elements: 9 10 20 30 40

입력: deque<int> mydeque;
      mydeque.push_front(5);
출력: 5

예제 1: 기본 사용법

#include <deque>
#include <iostream>
using namespace std;
int main(){
    deque<int> Deque = { 20, 30, 40, 50 };
    Deque.push_front(10);
    cout<<"Elements in Deque are : ";
    for(auto i = Deque.begin(); i!= Deque.end(); ++i)
        cout << ' ' << *i;
}

출력 결과

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

Elements in Deque are : 10 20 30 40 50

push_front(10) 호출 후 10이 기존 요소들 {20, 30, 40, 50}의 맨 앞에 추가되어 최종적으로 {10, 20, 30, 40, 50} 순서가 된 것을 확인할 수 있습니다.

예제 2: push_front와 pop_front 조합

#include <deque>
#include <iostream>
using namespace std;
int main(){
    int total = 0;
    deque<int> Deque;
    Deque.push_front(10);
    Deque.push_front(20);
    Deque.push_front(30);
    Deque.push_front(40);
    while (!Deque.empty()){
        total++;
        Deque.pop_front();
    }
    cout<<"Total number of elements in a deque are : "<<total;
    return 0;
}

출력 결과

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

Total number of elements in a deque are : 4

이 예제에서는 push_front()로 10, 20, 30, 40을 차례로 삽입했기 때문에 덱에는 {40, 30, 20, 10} 순서로 저장됩니다. 이후 while 루프에서 pop_front()를 반복 호출하며 덱이 빌 때까지 요소를 하나씩 제거하고, 그 횟수를 세어 총 요소 개수인 4를 출력합니다.

정리

deque::push_front()는 덱의 맨 앞에 요소를 삽입하는 간단하고 직관적인 함수입니다. 참고로 이 연산은 내부적으로 상수 시간, 즉 O(1)의 시간 복잡도로 수행되므로 성능 걱정 없이 사용할 수 있습니다. 벡터(vector)와 달리 덱은 앞쪽 삽입·삭제에도 효율적이라는 점이 큰 장점입니다.