Las colas de prioridad son un tipo de adaptadores de contenedores, diseñados específicamente para que el primer elemento de la cola sea el más grande o el más pequeño de todos los elementos de la cola. En general, los elementos se ordenan de acuerdo con alguna prioridad. Sin embargo, en C++ STL, el elemento superior es el elemento más grande por defecto. También podemos crear una cola de prioridad con un elemento mínimo en la parte superior pasando un parámetro adicional al crear la cola de prioridad. Es similar al montón mínimo/máximo.
La función top() se utiliza para hacer referencia al elemento superior de la cola de prioridad. El elemento superior (por defecto) es el elemento más grande en C++ STL.
Sin embargo, en otros lenguajes de programación como Java, por defecto se crea un montón mínimo y top() proporciona el elemento mínimo.
Sintaxis:
pqueuename.top() Parameters : No value is needed to pass as the parameter. Returns : Direct reference to the top(by default it is the largest element) element of the priority queue container.
Ejemplos:
Input : pqueue.push(5); pqueue.push(1); pqueue.top(); Output : 5 Input : pqueue.push(5); pqueue.push(1); pqueue.push(7); pqueue.top(); Output : 7
Errores y excepciones 1. Si el contenedor de la cola de prioridad está vacío, provoca un comportamiento indefinido 2. No tiene una garantía de lanzamiento de excepción si la cola de prioridad no está vacía
CPP
// CPP program to illustrate // Implementation of top() function #include <iostream> #include <queue> using namespace std; int main() { priority_queue<int> pqueue; pqueue.push(5); pqueue.push(1); pqueue.push(7); // Priority queue top cout << pqueue.top(); return 0; }
Producción:
7
Complejidad de tiempo: O(1)
Espacio Auxiliar: O(n)
Aplicación: Dada una cola de prioridad de números enteros, encuentre el número de números primos y no primos.
Input : 8, 6, 3, 2, 1 Output: Prime - 2 Non Prime - 3
Algoritmo 1. Introduzca el tamaño de la cola de prioridad en una variable. 2. Verifique si la cola de prioridad está vacía, verifique si el elemento superior es principal, si principal incrementa el contador principal y extraiga el elemento superior. 3. Repita este paso hasta que la cola de prioridad esté vacía. 4. Imprime el valor final de la variable prima y no prima(tamaño – prima).
CPP
// CPP program to illustrate // Application of top() function #include <iostream> #include <queue> using namespace std; int main() { int prime = 0, nonprime = 0, size; priority_queue<int> pqueue; pqueue.push(1); pqueue.push(8); pqueue.push(3); pqueue.push(6); pqueue.push(2); size = pqueue.size(); // Priority queue becomes 1, 8, 3, 6, 2 while (!pqueue.empty()) { for (int i = 2; i <= pqueue.top() / 2; ++i) { if (pqueue.top() % i == 0) { prime++; break; } } pqueue.pop(); } cout << "Prime - " << prime << endl; cout << "Non Prime - " << size - prime; return 0; }
Producción:
Prime - 2 Non Prime - 3
Complejidad de tiempo: O (nlogn)
Espacio Auxiliar: O(1)
Publicación traducida automáticamente
Artículo escrito por AyushSaxena y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA