Cola de prioridad en la biblioteca de plantillas estándar (STL) de C++ – Part 1

Las colas de prioridad son un tipo de adaptadores de contenedores , diseñados específicamente de modo que el primer elemento de la cola sea el mayor o el menor de todos los elementos de la cola y los elementos estén en orden no creciente (por lo tanto, podemos ver que cada elemento de la cola tiene una prioridad {orden fijo}). Sin embargo, en C++ STL, por defecto, el elemento superior es siempre el elemento más grande. También podemos cambiarlo al elemento más pequeño en la parte superior. Las colas de prioridad se crean en la parte superior del montón máximo y utilizan una array o un vector como estructura interna.

A continuación se muestra un ejemplo para demostrar la cola de prioridad y sus diversos métodos.
 

CPP

// CPP Program to demonstrate Priority Queue
#include <iostream>
#include <queue>
using namespace std;
  
void showpq(priority_queue<int> gq)
{
    priority_queue<int> g = gq;
    while (!g.empty()) {
        cout << '\t' << g.top();
        g.pop();
    }
    cout << '\n';
}
  
// Driver Code
int main()
{
    priority_queue<int> 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;
}

CPP

// C++ program to demonstrate min heap for priority queue
#include <iostream>
#include <queue>
using namespace std;
  
void showpq(
    priority_queue<int, vector<int>, greater<int> > gq)
{
    priority_queue<int, vector<int>, greater<int> > g = gq;
    while (!g.empty()) {
        cout << '\t' << g.top();
        g.pop();
    }
    cout << '\n';
}
  
// Driver Code
int main()
{
    priority_queue<int, vector<int>, greater<int> > 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;
}

C++

// CPP Program to demonstrate Priority Queue having min element at top
#include <iostream>
#include <queue>
using namespace std;
  
int main()
{
      int arr[]={1,2,3};
    
    priority_queue<int> pq1(arr, arr+3);     // creating priority queue using array
    
      cout<<"Max priority queue: ";
      while(pq1.empty()==false){
      cout<<pq1.top()<<" ";
      pq1.pop();
    }
      cout<<endl;
    
    
      for(int i=0; i<3; i++){   
      arr[i]=-arr[i];             // multiplying each array element by -1
    }
    
    priority_queue<int> pq2(arr, arr+3);
    
      cout<<"Min priority queue: ";
      while(pq2.empty()==false){
      cout<<-pq2.top()<<" ";
      pq2.pop();
    }
      
}

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *