이 글에서는 C++ STL의 queue::empty()와 queue::size() 함수의 동작 방식, 문법, 그리고 실제 코드 예제를 자세히 살펴보겠습니다.
C++ STL에서 큐(Queue)란 무엇인가?
큐는 C++ STL에 정의된 간단한 시퀀스 자료구조로, 데이터를 FIFO(First In First Out, 선입선출) 방식으로 삽입하고 삭제합니다. 큐의 데이터는 연속적인 방식으로 저장되며, 요소는 큐의 뒤쪽(rear)에서 삽입되고 앞쪽(front)에서 제거됩니다. C++ STL에는 이러한 큐의 동작 방식을 그대로 구현한 템플릿이 미리 정의되어 있어, 별도의 구현 없이도 손쉽게 큐를 활용할 수 있습니다.
queue::empty()란?
queue::empty()는 C++ STL의 내장 함수로, <queue> 헤더 파일에 선언되어 있습니다. 이 함수는 해당 큐 컨테이너가 비어 있는지 여부를 확인하는 데 사용됩니다. 반환 값은 true 또는 false이며, 큐가 비어 있으면(크기가 0이면) true를, 큐에 요소가 하나라도 있으면 false를 반환합니다.
문법
myqueue.empty();
이 함수는 매개변수를 받지 않습니다.
반환 값
연관된 큐 컨테이너의 크기가 0이면 true를, 그렇지 않으면 false를 반환합니다.
예제
입력: queue<int> myqueue = {10, 20, 30, 40};
myqueue.empty();
출력:
False
입력: queue<int> myqueue;
myqueue.empty();
출력:
True
실제 코드 예제
#include <iostream>
#include <queue>
using namespace std;
int main(){
queue<int> Queue;
Queue.push(10);
Queue.push(20);
Queue.push(30);
Queue.push(40);
// 큐가 비어 있는지 확인
if (Queue.empty()){
cout<<"Queue is empty";
}
else{
cout <<"Queue is not empty";
}
return 0;
}
출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Queue is not empty
queue::size()란?
queue::size() 역시 C++ STL의 내장 함수로, <queue> 헤더 파일에 선언되어 있습니다. 이 함수는 해당 큐 컨테이너의 크기를 확인하는 데 사용됩니다. 반환 값은 unsigned int 타입으로, 큐 컨테이너의 크기, 즉 큐에 저장된 요소의 개수를 의미합니다. 큐가 비어 있거나 요소가 하나도 없는 경우에는 0을 반환합니다.
문법
myqueue.size();
이 함수는 매개변수를 받지 않습니다.
반환 값
함수를 호출한 큐 컨테이너의 크기를 unsigned int 타입으로 반환합니다.
예제
입력: queue<int> myqueue = {10, 20, 30, 40};
myqueue.size();
출력:
4
입력: queue<int> myqueue;
myqueue.size();
출력:
0
실제 코드 예제
#include <iostream>
#include <queue>
using namespace std;
int main(){
queue<int> Queue;
Queue.push(10);
Queue.push(20);
Queue.push(30);
Queue.push(40);
cout<<"size of Queue is : "<<Queue.size();
return 0;
}
출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
size of Queue is : 4
정리
queue::empty()는 큐가 비어 있는지를 불리언 값으로 확인하는 함수이고, queue::size()는 큐에 저장된 요소의 개수를 숫자로 반환하는 함수입니다. 두 함수 모두 매개변수를 받지 않으며, O(1)의 상수 시간 복잡도로 수행됩니다. 특히 큐에서 요소를 꺼내기 전에 empty()로 큐가 비어 있는지 먼저 확인하면, 빈 큐에 대해 pop()을 호출할 때 발생할 수 있는 정의되지 않은 동작을 예방할 수 있으므로 안전한 큐 연산을 위해 두 함수를 함께 활용하는 것이 좋습니다.