이 글에서는 C++ STL에서 queue::push()와 queue::pop() 함수의 동작 방식, 문법, 그리고 실제 예제를 통해 어떻게 활용되는지 자세히 살펴보겠습니다.
C++ STL에서 큐(queue)란?
큐는 C++ STL에 정의된 간단한 시퀀스 컨테이너로, 데이터를 FIFO(First In First Out, 선입선출) 방식으로 삽입하고 삭제합니다. 즉, 먼저 들어간 데이터가 먼저 나오는 구조입니다. 큐의 데이터는 연속적인 방식으로 저장되며, 요소는 큐의 뒤쪽(rear)에서 삽입되고 앞쪽(front)에서 제거됩니다. C++ STL에는 이미 큐 템플릿이 사전 정의되어 있어, 별도의 구현 없이도 실제 큐와 동일한 방식으로 데이터를 손쉽게 다룰 수 있습니다.
queue::push()란?
queue::push()는 C++ STL의 내장 함수로, <queue> 헤더 파일에 선언되어 있습니다. 이 함수는 새로운 요소를 큐 컨테이너의 맨 뒤(back)에 삽입하는 데 사용됩니다. push()는 삽입하려는 요소를 나타내는 매개변수를 하나만 받으며, 호출 시 컨테이너의 크기가 1만큼 증가합니다.
또한 이 함수는 내부적으로 push_back()을 호출하여 큐의 맨 뒤에 요소를 간편하게 삽입합니다. push() 연산의 시간 복잡도는 상수 시간인 O(1)입니다.
문법
myqueue.push(type_t& value);
이 함수는 매개변수를 하나 받습니다. 여기서 type_t는 큐 컨테이너에 저장된 요소들의 자료형을 의미하며, 삽입할 값은 반드시 해당 자료형과 일치해야 합니다.
반환값
이 함수는 아무 값도 반환하지 않습니다(void).
예제
입력: queue<int> myqueue = {10, 20, 30, 40};
myqueue.push(23);
출력:
큐의 요소들 = 10 20 30 40 23실제 코드 예제
#include <iostream>
#include <queue>
using namespace std;
int main(){
queue<int> Queue;
for(int i = 0; i <= 5; i++){
Queue.push(i);
}
cout << "Elements in queue are : ";
while(!Queue.empty()){
cout << ' ' << Queue.front();
Queue.pop();
}
}
실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Elements in queue are : 0 1 2 3 4 5
queue::pop()란?
queue::pop() 역시 C++ STL의 내장 함수로, <queue> 헤더 파일에 선언되어 있습니다. 이 함수는 큐 컨테이너의 맨 앞(front)에 있는 기존 요소를 삭제하는 데 사용됩니다. pop()은 매개변수를 받지 않으며, 호출 시 해당 큐의 맨 앞 요소를 제거하고 컨테이너의 크기를 1만큼 감소시킵니다.
참고로 C++의 pop()은 삭제된 요소를 반환하지 않습니다. 삭제되는 요소의 값을 확인하려면 pop()을 호출하기 전에 front() 함수를 사용해야 합니다. pop() 연산 역시 시간 복잡도는 O(1)입니다.
문법
myqueue.pop();
이 함수는 매개변수를 받지 않습니다.
반환값
이 함수는 아무 값도 반환하지 않습니다(void).
예제
입력: queue<int> myqueue = {10, 20, 30, 40};
myqueue.pop();
출력:
큐의 요소들 = 20 30 40실제 코드 예제
#include <iostream>
#include <queue>
using namespace std;
int main(){
queue<int> Queue;
for(int i = 0; i <= 5; i++){
Queue.push(i);
}
for(int i = 0; i < 5; i++){
Queue.pop();
}
cout << "Element left in queue is : ";
while(!Queue.empty()){
cout << ' ' << Queue.front();
Queue.pop();
}
}
실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Element left in queue is : 5
마무리
queue::push()와 queue::pop()은 C++ STL 큐 컨테이너의 핵심 연산으로, 각각 데이터의 삽입과 삭제를 담당합니다. 두 함수 모두 상수 시간 O(1)에 실행되므로, 작업 대기열 관리, BFS(너비 우선 탐색), 생산자-소비자 패턴 등 요소의 처리 순서가 중요한 다양한 상황에서 효율적으로 활용할 수 있습니다.