Funciones de cola de prioridad de C ++

Funciones de cola de prioridad de C ++
"La cola es una estructura de datos FIFO (primero en, primera vez), lo que indica que la inserción se coloca al final y la eliminación se realiza desde el frente. Una variedad específica de colas es una cola prioritaria. A diferencia de la cola, la cola prioritaria no se adhiere al principio de FIFO.

Las colas prioritarias son una forma de adaptador de contenedores que se desarrolla especialmente para que, de acuerdo con algunas rigurosas condiciones de clasificación débil, su componente inicial es siempre el más grande de los elementos que posee. Este marco se asemeja a un montón en que los componentes se pueden agregar en cualquier momento, y solo se puede obtener el número máximo de componentes de montón (el primer elemento en la lista de prioridades).

Las colas prioritarias se construyen como inversores de contenedores, que son clases que utilizan una instancia cerrada de una categoría de contenedor particular como su contenedor real y ofrecen un conjunto particular de variables y funciones para recuperar sus componentes. El valor más alto de la cola de prioridad, o la "espalda" del contenedor, es donde se empujan los componentes desde."

¿Cuál es una cola de prioridad en c?++?

El primer componente en una cola prioritaria es el más grande de todos los componentes de la cola, y los componentes están en orden descendente. Una cola prioritaria es una forma de adaptador de contenedores en C ++ que solo maneja el componente de mayor prioridad.

Compare una cola con una cola prioritaria

No hay prioridad en una cola; Por el contrario, un contenedor de cola considera que el elemento tiene la máxima prioridad. La primera regla de primera salida (FIFO) se aplica a la cola; Sin embargo, en la cola de prioridad, el componente con la más alta prioridad se eliminaría primero. Si varios elementos tienen una prioridad similar, el orden de la cola se utilizaría en esta situación.

Sintaxis de la cola de prioridad

La cola prioritaria en C ++ tiene la siguiente sintaxis:

Los parámetros se describen de la siguiente manera:

  • Tipo: el tipo de contenido o componentes que se mantienen en la cola de prioridad.
  • Contenedor: Debido a que la cola prioritaria es un adaptador de contenedor, su ejecución requiere un contenedor subyacente real. El contenedor que se utilizará para crear la cola de prioridad se especifica con esta opción. El vector sirve como un contenedor estándar de forma predeterminada.
  • Comparar: este parámetro es opcional. Los componentes en la cola prioritaria se organizan en la cola de prioridad de acuerdo con el orden interno de un objeto. Conserva las posiciones relativas de los elementos al compararlas. El posible valor del objeto de función es el menor, lo que produce el mismo resultado que el operador menos que el operador.

La cola de prioridad se construye con un máximo-heap de forma predeterminada en c++.

Sintaxis de la cola de prioridad mínimo

La creación de la sintaxis Min-Weap de la cola prioritaria es la siguiente:

Aquí mayor es una clase de comparación, y Vector es un contenedor de biblioteca de plantillas estándar.

Beneficios del uso de la cola de prioridad

Se asignan peso a los vértices, lo que les permite ascender la cola en lugar de caer hacia atrás, ya que están en una cola estándar.

Descubra del uso de la cola de prioridad

Debido a que también necesitamos usar una operación de adición para agregar los elementos de acuerdo con su prioridad, la inserción ya no lleva una cantidad fija de tiempo, como hacer colas. La implementación utilizando una lista vinculada permite mantener un tiempo de inserción consistente.

Metodologías de cola prioritaria

Las funciones de cola de prioridad de C ++ son las siguientes:

  • Función vacía (): este método se utiliza para determinar si el contenedor que contiene la cola de prioridad está en blanco o no. Devolver verdadero si está vacío; falso de lo contrario. No requiere argumentos.
  • Método size (): esta función devuelve el recuento de elementos de la cola de prioridad. El tamaño se devuelve como entero. No requiere argumentos.
  • Función push (): el elemento se agrega a la cola que aplica este enfoque. El elemento se agrega por primera vez al final de la cola, y al mismo tiempo, los componentes se realinean de acuerdo con la prioridad. Como en el argumento, acepta enteros.
  • Función Pop (): esta técnica elimina el componente más grande de la cola de prioridad. No requiere argumentos.
  • Función Top (): el componente superior de la cola de prioridad es devuelto por esta función. No requiere argumentos.
  • Función swap (): usando esta función, una cola prioritaria de un tamaño y tipo similar se cambia por sus componentes con alguna otra cola de prioridad. Acepta un atributo cuyos números deben cambiarse y la cola de prioridad.
  • Función emplace (): con este enfoque, se agrega un elemento de datos a un contenedor en la parte superior de la cola. Acepta un valor de atributo.

Realicemos las funciones mencionadas anteriormente en diferentes códigos.

Ejemplo no 1

Agregaremos un elemento a una cola prioritaria en este ejemplo. Para agregar un elemento a la cola de prioridad, utilizaremos la función push ().

Los archivos de encabezado requeridos y se incorporarán al comienzo del programa. Entonces el espacio de nombres estándar se agregará como STD. Ahora se llamaría a la función principal (). La cola de los valores enteros se creará a continuación. Esta cola será una cola prioritaria. Se agregarán diferentes valores a esta cola prioritaria. Los números se insertarán mediante el uso de la función push (). Se agregarán tres valores aleatorios utilizando el método de empuje. La declaración "cout" se empleará para representar el texto "Elementos de la cola de prioridad" en la consola.

Después de mostrar esta línea para imprimir los valores del bucle "while" de cola se utilizará; Dentro del bucle "while", la función vacía () se aplicará para verificar si la cola está vacía o no. El método pop () se utilizará para comenzar a imprimir los valores de la cola en orden descendente. Entonces el método pop () también se aplica a los valores de la cola. El "retorno 0" debe incorporarse al final.

Hemos construido una cola prioritaria que tiene enteros llamados num. La función push () se ha utilizado para agregar las diferentes entradas a la cola: 12, 30 y 72.

Ejemplo no 2

A diferencia de los vectores y otras estructuras, no podemos atravesar una cola prioritaria. Por esta razón, hemos imprimido a los miembros de la cola de prioridad utilizando un bucle de tiempo y métodos de cola prioritarios diferentes.

Esto es para que la cola prioritaria funcione como una estructura de datos de cola prioritaria típica, por lo que es un adaptador de contenedor STL con acceso limitado. Como resultado, imprimimos su parte superior antes de hacer estallar periódicamente el elemento dentro de un bucle hasta que la cola esté vacía.

Ejemplo no 3

Decidimos eliminar el artículo de la cola de prioridad en este caso. La función pop () podría usarse para eliminar un componente de la cola de prioridad. El valor máximo se elimina en este enfoque.

Iniciaremos el código integrando las bibliotecas y el espacio de nombres estándar. Las bibliotecas contienen y . El método para mostrar la cola de prioridad se llamaría utilizando display_priority_queue (). La cola contiene los números enteros, por lo que se suministrará "int" como argumento de la función. Después de todo esto, se invocará el método Main (). La cola se creará. La función push () se utilizará para agregar diferentes valores en la cola de prioridad definida. La declaración "Cout" se usa para mostrar los elementos originales de la cola de prioridad.

Entonces se aplicará el método pop (). Esta función elimina el valor especificado de la cola de prioridad. Ahora, la declaración "cout" se empleará para mostrar los valores de la cola después de eliminar un elemento de la cola. El comando "return 0" se agregaría. A continuación, el método de utilidad se utilizará para mostrar la cola de prioridad definida. El bucle "while" se empleará. Dentro del bucle "while" bucle () y los métodos top () se utilizarán. La condición de bucle se aplicará a la función vacía (). El método pop () se utilizaría para eliminar el valor más alto de la cola de prioridad.

Aquí, hemos hecho una cola de prioridad entera denominada num. Los componentes iniciales de la cola de prioridad son "61, 23, 45."El atributo más alto se eliminó luego utilizando la técnica pop (). Entonces, el resultado será "45, 23."

Ejemplo no 4

En este caso, la función superior () se utilizará para recuperar el valor máximo de la cola de prioridad.

Las bibliotecas y el espacio de nombres predeterminado se integrarán antes de comenzar a escribir el código. y ambos están disponibles en las bibliotecas. Luego llamaremos a la función principal (). El método de creación de cola prioritaria se invocaría. La función recibirá el argumento "INT" porque la cola contiene solo números enteros. Se agregarán diferentes valores a la cola de prioridad especificada utilizando la función push ().

Pop () se usará después de que los elementos se hayan agregado a la cola de prioridad. Esta función mostró el valor máximo de la cola de prioridad proporcionada. El texto "Elemento superior de la cola de prioridad" se muestra utilizando la instrucción Cout. La instrucción "return 0" podría aplicarse para finalizar el programa.

Ejemplo no 5

En esta ilustración, verificamos si la cola prioritaria está vacía o no usando la función vacía (). Esta metodología produce:

  • Cuando la cola prioritaria no contiene elemento, el valor 1 (verdadero)
  • Cuando la cola prioritaria contiene el elemento 0 (falso).

Al comienzo del programa, los archivos de encabezado requeridos y se incluirían. Entonces STD se agregará al espacio de nombres estándar. Ahora se invocaría el método principal (). Habría una cola creada utilizando la función. Este método tomará el parámetro "cadena" ya que contiene valores con el tipo de datos "cadena" en esta cola. Esto tendrá una prioridad. "¿La cola contiene cualquier valor??"Se imprimiría usando el comando" cout ".

La condición "if-else" se utilizaría para determinar la respuesta. La función vacía () se aplicará dentro de la instrucción "si" para verificar si la cola tiene algún valor o no. Si la cola contiene algún valor, entonces la declaración "cout" imprime "sí", otra declaración "cout" imprime "no" como la salida. Como resultado, la línea titulada "Empujar los valores de la cola de prioridad" se muestra en la pantalla por la pantalla "Cout". La cola de prioridad se actualizará para incluir los nombres de varios países. El método push () se utilizaría para insertar los nombres. La técnica de empuje agregará los nombres de tres países. "¿La cola contiene cualquier valor??"Se imprimirá en la consola utilizando el comando" cout ".

La condición "if-else" se aplicará después de la visualización de esta línea. El método vacía () se usará una vez más para confirmar si la cola está vacía o no. El último "regreso 0" debe estar presente.

Para verificar si la cola de prioridad del país está llena o no, utilizamos la función vacía (). La cola está vacía al principio. País.vacía () Por lo tanto, devuelve verdadero. Después de eso, agregamos elementos a la cola y una vez más utilizamos la función vacía (). Esta vez, da resultados falsos.

Conclusión

Primero, exploramos qué cola de prioridad en C ++ es en este artículo. Luego contrastamos la cola simple con la cola prioritaria. Además, observamos la sintaxis de la cola prioritaria, así como sus beneficios y inconvenientes. Además, discutimos los diversos métodos de C ++ para las colas prioritarias. Se utiliza un contenedor llamado cola prioritaria para mantener componentes con prioridades. En contraste con las colas, que agregan o eliminan los componentes de acuerdo con la regla FIFO, los elementos en una cola de prioridad se eliminan de acuerdo con la prioridad. El componente inicial eliminado de la cola será el que tenga la máxima prioridad. El propósito de la cola de prioridad es administrar los componentes de acuerdo con la prioridad.

Se han implementado cinco instancias diferentes en este artículo. En primera instancia, utilizamos la función push () para insertar los elementos en la cola de prioridad. El segundo ejemplo utiliza un bucle "while" para mostrar los valores de la cola de prioridad. En el tercer escenario, utilizamos el método pop () para eliminar el valor máximo de la cola de prioridad. Con la ayuda de la función superior (), pudimos recuperar el valor más alto en la cuarta ilustración. En el último, empleamos el método vacía () para determinar si la cola prioritaria estaba vacía o no.