Priority Queue in C++ Standard Template Library (STL)

• Difficulty Level : Easy
• Last Updated : 17 Dec, 2021

Priority queues are a type of container adapters, specifically designed such that the first element of the queue is the greatest of all elements in the queue and elements are in nonincreasing order (hence we can see that each element of the queue has a priority {fixed order}). Following is an example to demonstrate the priority queue and its various methods.

CPP

 // CPP Program to demonstrate Priority Queue#include #include using namespace std; void showpq(priority_queue gq){    priority_queue g = gq;    while (!g.empty()) {        cout << '\t' << g.top();        g.pop();    }    cout << '\n';} // Driver Codeint main(){    priority_queue gquiz;    gquiz.push(10);    gquiz.push(30);    gquiz.push(20);    gquiz.push(5);    gquiz.push(1);     cout << "The priority queue gquiz is : ";    showpq(gquiz);     cout << "\ngquiz.size() : " << gquiz.size();    cout << "\ngquiz.top() : " << gquiz.top();     cout << "\ngquiz.pop() : ";    gquiz.pop();    showpq(gquiz);     return 0;}
Output
The priority queue gquiz is :     30    20    10    5    1

gquiz.size() : 5
gquiz.top() : 30
gquiz.pop() :     20    10    5    1

Note: By default, C++ creates a max-heap for priority queue.

How to create a min-heap for the priority queue?

C++ provides the below syntax for the same.

Syntax:

priority_queue <int, vector<int>, greater<int>> g = gq;

CPP

 // C++ program to demonstrate min heap for priority queue#include #include using namespace std; void showpq(    priority_queue, greater > gq){    priority_queue, greater > g = gq;    while (!g.empty()) {        cout << '\t' << g.top();        g.pop();    }    cout << '\n';} // Driver Codeint main(){    priority_queue, greater > gquiz;    gquiz.push(10);    gquiz.push(30);    gquiz.push(20);    gquiz.push(5);    gquiz.push(1);     cout << "The priority queue gquiz is : ";    showpq(gquiz);     cout << "\ngquiz.size() : " << gquiz.size();    cout << "\ngquiz.top() : " << gquiz.top();     cout << "\ngquiz.pop() : ";    gquiz.pop();    showpq(gquiz);     return 0;}
Output
The priority queue gquiz is :     1    5    10    20    30

gquiz.size() : 5
gquiz.top() : 1
gquiz.pop() :     5    10    20    30

Note: The above syntax may be difficult to remember, so in case of numeric values, we can multiply the values with -1 and use max heap to get the effect of min heap.

Methods of Priority Queue are:

Must Read: Recent articles on priority queue in STL