#include <queue>
using namespace std;
//최소부터 반환하는 큐(오름차순 정렬)
//컴파일러가 int>> 부분을 비트연산으로 착각할 수 있으니 띄어쓰기 해주기
priority_queue< int, vector<int>, greater<int> > q1;
//최대부터 반환하는 큐(내림차순 정렬)
priority_queue< int, vector<int>, less<int> > q2;
//q2와 똑같은 기능. 디폴트는 less임
priority_queue<int> q3;
priority_queue< 자료형, 구현체, 비교 연산자 > 이름;
vector<자료형>
이 디폴트deque<자료형>
도 가능less<자료형>
: 최대부터 반환(내림차순 정렬)greater<자료형>
: 최소부터 반환(오름차순 정렬)q1.pop();
int n = q1.pop();
불가능int n = q1.top();
을 통해 변수에 저장한 후 pop해야함q1.push(value);
q1.top();
q1.empty();
q1.size();
𝑂(𝑙𝑜𝑔𝑁)
𝑂(𝑁𝑙𝑜𝑔𝑁)
𝑂(𝑁𝑙𝑜𝑔𝑁)
👉 생각보다 연산속도가 빠르므로 가능한 경우엔 최대한 이용하도록 하자!
#include <queue>
using namespace std;
queue<int> q;
queue<자료형> 이름;
q.pop();
q.push(value);
q.front();
q.size();
q.empty();
while(!q.empty())
안에서 큐 관련 작업을 함q.front()
q.pop()
은 반드시 !q.empty()
라는 조건 안에서 수행 priority_queue<int, vector<int>, greater<int>> pq;
for (int i = 0; i < 10; i++)
{
arr[i] = i;
}
pq.push(arr[0]);
pq.push(arr[1]);
pq.push(arr[2]);
arr[1] = 10; //큐 밖에서 변수값을 10으로 바꿔도
while (!pq.empty())
{
int a = pq.top();
cout << a; //큐 안에 있는 값은 그대로 1
pq.pop();
}