[Basic C++] #67_queue
C++의 STL에서 제공하는 queue 컨테이너에 대해 알아보겠습니다.
Overview
- 개념
- 선언
- 멤버 함수
- 예제
#0. 개념
1. 큐
- 큐는 먼저 삽입된 데이터가 먼저 삭제되는 FIFO(First In First Out) 혹은 선입선출 방식으로 작동합니다.
- 데이터 목록의 한쪽 끝에서는 데이터의 삽입만 이루어지며, 다른 한쪽 끝엔서는 데이터의 삭제 작업만 이루어집니다.
#1. 선언
1. 헤더
#include <queue>
2. 선언 및 초기화
#include <iostream>
#include <queue>
#include <vector>
using namespace std;
int main()
{
// #1. 기본 생성자
queue<int> q1;
// #2. 복사 생성자
queue<int> q2(q1);
// #3. deque 활용 범위 기반 초기화
vector<int> v = { 1,2,3 };
queue<int> q3(deque<int>(v.begin(), v.end()));
// #4. deque 활용 원소 수, 값 초기화
queue<int> q4(deque<int>(3, 1));
}
#2. 멤버 함수
1. 접근
#include <iostream>
#include <queue>
using namespace std;
int main()
{
queue<int> q;
q.push(1);
q.push(2);
q.push(3);
// #1. front() : 큐의 가장 앞에 있는 원소에 접근
cout << q.front() << endl;
// #2. back() : 큐의 가장 마지막 원소에 접근
cout << q.back() << endl;
// #3. size() : 큐에 들어있는 원소의 개수
cout << q.size() << endl;
}
2. 삽입, 제거
#include <iostream>
#include <queue>
int main() {
std::queue<int> myQueue;
// #1. 삽입
myQueue.push(10);
myQueue.push(20);
myQueue.push(30);
// #2. 제거
myQueue.pop();
return 0;
}
3. 그 외 멤버 함수
#include <iostream>
#include <queue>
int main() {
std::queue<int> queue1;
std::queue<int> queue2;
// #1. empty() : 큐가 비어있는지 확인하는 함수
if (queue1.empty()) {
std::cout << "Queue is empty." << std::endl;
}
// #2. emplace(): 임시 값, 우측 값을 삽입하는 함수
queue1.emplace(10);
queue1.emplace(20);
queue1.emplace(30);
// #3. swap() : 다른 queue 컨테이너와 swap하는 함수
queue1.swap(queue2);
return 0;
}
#3. 예제
1. STL의 queue 컨테이너 활용 문제
2. 요세푸스 문제
'언어 > Basic C++' 카테고리의 다른 글
[Basic C++] #69_priority_queue (0) | 2023.06.22 |
---|---|
[Basic C++] #68_deque (0) | 2023.06.16 |
[Basic C++] #66_rotate, 배열 회전 (0) | 2023.04.03 |
[Basic C++] #65_getline() (0) | 2023.04.03 |
[Basic C++] #64_stack (0) | 2023.04.03 |