View
【 큐(Queue) 란? 】
C++의 STL 중 하나인 큐(Queue)는 선입선출(FIFO, First-In-First-Out) 자료구조를 구현하는 컨테이너 클래스이다.
큐는 데이터를 삽입하는 enqueue와 데이터를 삭제하는 dequeue 연산을 지원한다.
일상생활에서 우리가 자주 접하는 큐의 예시로는 음식점에서 주문을 받는 경우를 들 수 있다. 음식점에서는 손님이 주문을 하면 주문서를 작성하고, 그 주문서는 주방에 전달되며 그 내용을 바탕으로 음식을 만들고 손님에게 전달한다. 이때 음식을 전달하는 과정은 큐의 구조처럼 주문이 들어온 순서대로 이루어진다.
【 큐(Queue)의 특징 】
큐는 다음의 특징이 있다.
- 선입선출(FIFO) 구조: 앞서 언급했듯이 선입선출 구조를 가지고 있어, 먼저 들어온 데이터가 먼저 처리되고 나중에 들어온 데이터는 나중에 처리된다.
- 제한적인 데이터 삽입/삭제: 데이터를 삽입하는 경우는 큐의 맨 뒤에 새로운 데이터를 추가하고, 데이터를 삭제하는 경우는 큐의 맨 앞에서 데이터를 삭제한다.
- O(1)의 시간 복잡도: 삽입과 삭제가 각각 O(1)의 시간 복잡도를 가지고 있어 효율적인 처리가 가능하다.
- 순차적인 접근: 순차적인 접근만 가능하며, 임의의 위치에 있는 데이터에는 직접적으로 접근할 수 없다.
【 큐(Queue)의 멤버 함수 】
멤버 함수 | |
q.push() |
큐의 뒤쪽에 데이터 삽입 |
q.pop() |
큐의 맨 앞쪽의 데이터 제거 |
q.front() |
큐의 맨 앞쪽의 데이터 반환 |
q.back() |
큐의 맨 뒤쪽의 데이터 반환 |
q.empty() |
큐가 비어 있는지 확인(비었으면 1, 아니면 0을 반환) |
q.size() |
큐에 저장된 데이터의 개수 반환 |
q.swap() |
서로 다른 두 큐의 데이터를 교환할 때 사용 |
【 예제 】
다음은 큐를 사용하여 1부터 10까지의 자연수 중 홀수만 출력하는 예제 코드이다.
#include <iostream>
#include <queue>
using namespace std;
int main() {
queue<int> q;
for (int i = 1; i <= 10; i++) {
q.push(i);
}
while (!q.empty()) {
int num = q.front();
q.pop();
if (num % 2 == 1) {
cout << num << " ";
}
}
cout << endl;
return 0;
}
728x90
'C++' 카테고리의 다른 글
[C++] 공백(띄어쓰기) 포함 문자열 입력 받기 (0) | 2023.04.17 |
---|---|
[C++][STL] 덱(Deque) 개념과 사용 방법 (0) | 2023.04.14 |
[C++][STL] 스택(Stack) 개념과 사용 방법 (0) | 2023.04.08 |
reply