1. Queue
1-1) Queue란?
queue는 FIFO로 먼저 들어온 것이 먼저 나가는 것입니다.
1-2) 사용 방법
include <queue>
queue<int> q;
1-3) 추가, 삭제, 조회, 기타
push: 큐에 값을 삽입
pop: 큐의 값을 삭제
front: 큐의 조회
back: 큐의 조회
size: 큐의 크기
empty: 큐가 비었으면 True, 아니면 False
1-4) 코드
#include <queue>
#include <iostream>
using namespace std;
int main() {
queue<int> q;
q.push(1);
q.push(5);
q.push(7);
q.push(3);
q.push(2);
q.push(4);
cout << q.front() << " " << q.back() << endl;
cout << q.size() << endl;
q.pop();
cout << q.front() << " " << q.back() << endl;
cout << q.size() << endl;
return 0;
}
<결과는 더보기>
더보기
1 4
6
5 4
5


2. Priority_queue
2-1) Prioirty_Queue란?
queue형태로 큰것부터 작은 순으로 정렬된 형태를 말한다.
2-2) 사용 방법
include <queue>
priority_queue<int> pq;
2-3) 추가, 삭제, 조회, 기타
push: 큐에 값을 삽입
pop: 큐의 값을 삭제
top: 큐의 조회 == queue 의 front와 같다.
size: 큐의 크기
empty: 큐가 비었으면 True, 아니면 False
2-4) 코드
#include <queue>
#include <iostream>
using namespace std;
int main() {
int arr[] = { 10,20,30,40 };
priority_queue<int> pq1;
priority_queue<int> pq2(arr, arr + 4);
priority_queue<int, vector<int>, greater<int>> pq3(arr, arr + 4);
while (!pq2.empty()) {
cout << pq2.top() << " ";
pq2.pop();
}
cout << endl;
while (!pq3.empty()) {
cout << pq3.top() << " ";
pq3.pop();
}
cout << endl;
return 0;
}
<결과는 더보기>
더보기
40 30 20 10
10 20 30 40
※ 주의
queue에서 아래는 불가능
int arr[] = { 10,20,30,40 };
queue<int> pq2(arr, arr + 4);
3. Pair
Prioirty_Queue에 pair를 적용한 모습
< Min부터 Max의 순서>
#include <queue>
#include <iostream>
using namespace std;
int main() {
pair<int, int> arr[] = {
{1,2},
{4,5},
{3,2},
{7,9},
{7,2},
{4,1},
{6,3},
{6,2},
{6,6}
};
priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int,int>>> pq(arr, arr + 9);
while (!pq.empty()) {
cout << pq.top().first << ", " << pq.top().second << endl;
pq.pop();
}
return 0;
}
<결과는 더보기>
더보기
1, 2
3, 2
4, 1
4, 5
6, 2
6, 3
6, 6
7, 2
7, 9
< Max부터 Min의 순서>
priority_queue<pair<int, int>> pq1(arr, arr + 9);
728x90
'알고리즘 > 코딩 & 알고리즘 공부' 카테고리의 다른 글
| [C++] Heap 자료구조 (0) | 2022.04.21 |
|---|---|
| [C++] Binary Search 알고리즘 (0) | 2022.04.21 |
| [C++] Union Find & MST & 크루스칼 (Kruskal) 알고리즘 정리 (0) | 2022.04.20 |
| [C++] find, substr, erase, insert (0) | 2021.07.23 |
댓글