Cómo implementar una cola de prioridad en C ++



Este artículo le proporcionará un conocimiento detallado y completo sobre cómo implementar una cola de prioridad en C ++ con ejemplos.

Una cola de prioridad es un contenedor en el STL. Es similar a la cola, excepto por el hecho de que cada elemento de la cola de prioridad tiene cierta prioridad y cuando sacamos elementos de la cola de prioridad, los elementos con la prioridad más alta aparecen primero. Al igual que la cola de prioridad, hay 10 tipos diferentes de contenedores en STL . Un contenedor es un objeto que almacena datos. Los contenedores STL se implementan con la ayuda de clases de plantillas, por lo que personalizarlos para contener diferentes tipos de datos es fácil. En esta publicación, discutiremos la cola de prioridad y los conceptos relacionados con ella en detalle. Los siguientes punteros se cubrirán en este artículo de Priority Queue en C ++,

Continuando con este artículo sobre Priority Queue en C ++





Componentes de STL

STL consta de clases de plantilla y funciones que se pueden utilizar como un enfoque estándar para almacenar y procesar datos. Analicemos los componentes de STL

Contenedores Hay 10 tipos de contenedores definidos en STL y estos se agrupan en 3 categorías. De estas 3, las colas de prioridad pertenecen a la categoría del contenedor derivado. Cada clase de contenedor tiene su propio conjunto de funciones que se pueden utilizar para manipular los datos.



Algoritmo - Un algoritmo es un método utilizado para procesar los datos presentes en el objeto contenedor. STL proporciona muchos tipos diferentes de algoritmos que se pueden utilizar para inicializar, buscar, clasificar, fusionar y copiar. Los algoritmos se implementan con la ayuda de funciones de plantilla.

Iterador Un iterador es un objeto que apunta hacia un elemento en el contenedor. Los iteradores pueden ayudar a moverse a través del contenido de un recipiente. Los iteradores son como punteros que se pueden incrementar y decrementar. Actúa como enlace entre el algoritmo y el contenedor. Los iteradores se utilizan para manipular los datos almacenados en un contenedor.

Continuando con este artículo sobre Priority Queue en C ++



Montones y cola de prioridad

Como vimos anteriormente, Priority Queue pertenece a la categoría de contenedores derivados. Otros miembros de esta categoría son pila y cola. Estos contenedores derivados también se conocen como adaptadores de contenedores.

La pila, la cola y la cola de prioridad se conocen como contenedores derivados, ya que están hechos de diferentes contenedores de secuencia. Estos contenedores no admiten ningún tipo de iteradores, no se utilizan para la manipulación de datos.

¿Qué es exactamente una cola de prioridad?

En palabras simples, es un contenedor que usamos para almacenar datos. A cada elemento de los datos almacenados se le asigna una prioridad que puede ayudarnos a almacenar datos en un orden lógico.
Sintaxis:cola_prioridad nombre_variable

Es importante incluir un archivo de encabezado en el programa para usar una cola de prioridad.

cola de prioridad en c ++Por ejemplo, si agregamos 2, 10, 30, 5, 6 en nuestra cola de prioridad usando la función push y luego sacamos los elementos usando la función pop, la salida será 30, 10, 6, 5, 2.

cómo escribir un método de cuerda

Bien, ahora sabemos el propósito o el uso de la cola de prioridad. Pero, ¿cómo sabía si 30> 10? ¿Está haciendo algún tipo de clasificación? En este punto, Heaps entra en escena. Para obtener más información sobre los montones, consulte este artículo.

Montones: los montones son estructuras en forma de árbol. Según cómo los nodos de los elementos secundarios están organizados en un montón con respecto a los nodos principales, los montones se subdividen en 2 partes

1. Montón mínimo En Min Heap, el valor del nodo principal es menor o igual que el valor de los nodos secundarios.

2. Montón máximo En Max Heap, el valor del nodo principal es mayor o igual que el valor de los nodos secundarios.

Nota- La cola de prioridad no ordena los elementos mediante algún algoritmo de ordenación, sino que almacena los datos en forma de montón.

<> operador en sql

Continuando con este artículo sobre Priority Queue en C ++

Imprimir todos los elementos de una cola prioritaria

Después de comprender los fundamentos de la cola de prioridad, implementemos programas para comprender los métodos más utilizados con una cola de prioridad.

#include #include usando el espacio de nombres std int main () {priority_queue Prior_q Prior_q.push (10) Prior_q.push (30) Prior_q.push (6) Prior_q.push (2) Prior_q.push (15) Prior_q.push (9) Prior_q.push (7) while (Prior_q.empty () == falso) {cout<< Prior_q.top() << ' ' Prior_q.pop() } return 0 }

Salida:

30 15 10 9 6 2

En el programa anterior, usamos las funciones pop (), top () y push () que se usan la mayoría de las veces cuando se trata de una cola de prioridad. Echemos un vistazo a algunos de los métodos que podemos usar con una cola de prioridad

Talla( ): Esta función devuelve el tamaño de la cola de prioridad

vacío (): Esta función se utiliza para comprobar si la cola de prioridad está vacía o no. Devuelve verdadero si la cola de prioridad está vacía.

empujar( ): Inserta un elemento en la cola de prioridad.

pop( ): Esta función elimina el elemento superior de la cola de prioridad, que es el elemento con mayor prioridad.

intercambio (): Esta función intercambia los elementos de la cola de prioridad con otra cola de prioridad. La función toma una cola de prioridad como parámetro.

emplazamiento (): Esta función solía agregar un elemento al principio de la cola de prioridad.

Veamos un programa más.

#include #include usando el espacio de nombres std int main () {priority_queue Prior_q Prior_q.push (10) Prior_q.push (30) Prior_q.push (6) Prior_q.push (2) Prior_q.push (15) Prior_q.push (9) Prior_q.push (7) while (Prior_q.empty () == falso) {cout<< Prior_q.top() << ' ' Prior_q.pop() } return 0 }

Salida:

2 6 7 9 10 15 30

Con esto, llegamos al final de este artículo de Priority Queue en C ++. Si desea obtener más información, consulte el por Edureka, una empresa de aprendizaje en línea de confianza. El curso de certificación y capacitación Java J2EE y SOA de Edureka está diseñado para capacitarlo en conceptos básicos y avanzados de Java junto con varios marcos de Java como Hibernate y Spring.

Tienes una pregunta para nosotros? Menciónelo en la sección de comentarios de este blog y nos pondremos en contacto con usted lo antes posible.