Skip to content
Related Articles

Related Articles

Improve Article
Save Article
Like Article

Priority queue of pairs in C++ (Ordered by first)

  • Difficulty Level : Easy
  • Last Updated : 04 Oct, 2018

In C++, priority_queue implements heap. Below are some examples of creating priority queue of pair type.

Max Priority queue (Or Max heap) ordered by first element

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.




// C++ program to create a priority queue of pairs.
// By default a max heap is created ordered
// by first element of pair.
#include <bits/stdc++.h>
  
using namespace std;
  
// Driver program to test methods of graph class
int main()
{
    // By default a max heap is created ordered
    // by first element of pair.
    priority_queue<pair<int, int> > pq;
  
    pq.push(make_pair(10, 200));
    pq.push(make_pair(20, 100));
    pq.push(make_pair(15, 400));
  
    pair<int, int> top = pq.top();
    cout << top.first << " " << top.second;
    return 0;
}

Output :

20 100


Min Priority queue (Or Min heap) ordered by first element




// C++ program to create a priority queue of pairs.
// We can create a min heap by passing adding two 
// parameters, vector and greater().
#include <bits/stdc++.h>
  
using namespace std;
  
typedef pair<int, int> pi;
  
// Driver program to test methods of graph class
int main()
{
    // By default a min heap is created ordered
    // by first element of pair.
    priority_queue<pi, vector<pi>, greater<pi> > pq;
  
    pq.push(make_pair(10, 200));
    pq.push(make_pair(20, 100));
    pq.push(make_pair(15, 400));
  
    pair<int, int> top = pq.top();
    cout << top.first << " " << top.second;
    return 0;
}

Output :

10 200



My Personal Notes arrow_drop_up
Recommended Articles
Page :