Ejemplo:
Comencemos con el ejemplo de usar una cola de prioridad con el comparador personalizado en c++. Entonces, la carcasa terminal debe abrirse con Ctrl+Alt+T corto. El archivo C ++ debe crearse en el shell utilizando la instrucción "toque" de Ubuntu. Es bastante fácil hacerlo. Después de eso, este archivo debe abrirse dentro de algún editor para hacer código. Puedes tener vim, texto o editor nano. Utilizamos el editor "nano" aquí para una edición y actualización rápida.
$ touch cola.CC
$ nano cola.CC
Por lo tanto, el archivo C ++ vacío se abrirá en la pantalla de su terminal dentro del editor nano. Es hora de agregar algunas bibliotecas de encabezado dentro de su inicio para que nuestro código funcione correctamente. Por lo tanto, utilizamos el signo "#include" con cada encabezado. El encabezado "iOStream" se usa para hacer uso de la secuencia de entrada-salida. El encabezado "vector" está desestimado para usar la estructura de datos vectorial. El encabezado "Unordered_map" se ha utilizado para crear un mapa para los valores de un vector en cantidades. El archivo de encabezado "cola" está aquí para usar la cola de prioridad y sus funciones de datos relacionadas. Comenzamos el método Main () Después del uso del espacio de nombres estándar "STD", hemos comenzado el método Main (). Hemos creado una estructura de datos vectorial llamada "color" del tipo de cadena para mantener los valores de las cadenas. Mientras que el "color" del objeto vectorial ha estado utilizando la función push_back () para agregar algunos nombres de color en el vector, i.mi., Rojo, verde, azul, blanco y negro.
#incluir
#incluir
#incluir
#incluir
usando el espacio de nombres STD;
int main ()
cout << "Starting… \n";
vectorcolor;
color.push_back ("rojo");
color.push_back ("verde");
color.push_back ("azul");
color.push_back ("blanco");
color.push_back ("negro");
Después de crear un objeto vectorial, tenemos que crear una estructura de mapa utilizando la palabra clave "undered_map". El objeto para este mapa es "m", y contiene parámetros de cadena y entero. El mapa se crea para unir la cantidad entera con el vector de cadena, por lo que el valor de tipo entero se asigna a los valores de cadena de un "color" vectorial individualmente.
Desordenable_mapmetro;
m ["rojo"] = 2;
m ["verde"] = 4;
m ["azul"] = 6;
m ["blanco"] = 8;
m ["negro"] = 10;
Aquí viene el comparador personalizado declarado como variable "CMP" con la palabra clave "Auto."La palabra clave automática se usa para recuperar el resultado de cualquier tipo sin definirla. La instrucción "IF" se usa para verificar si la cantidad de un valor de mapa izquierdo es igual a la cantidad de un valor de mapa derecho o no. Si es así, volverá que el carácter del lado izquierdo es mayor que el carácter del lado derecho de una cadena a la variable "CMP". Si no son iguales, devolverá que el valor de la cantidad del lado derecho es mayor que el valor de cantidad del lado izquierdo de una cadena a través de un mapa. Esto está clasificando la cantidad en orden descendente mientras el nombre de la cadena se ordena en orden ascendente.
AUTO CMP = [&] (String & l, String & r)
if (m [le] == m [r])
return l> r;
return m [r]> m [l];
;
Ahora, es hora de crear una cola prioritaria y agregar todos los colores utilizando el vector. Por lo tanto, la cola de prioridad se ha generado utilizando el vector de tipo de cadena, y el tipo de declaración se ha establecido como obtiene de la variable comp. El PQ es el objeto de cola prioritario. El bucle "para" está aquí para empujar cada color a la cola de prioridad "PQ" a través de la función Push ().
prioridad_queue, declType (cmp)> pq (cmp);
for (const string & clr: color)
pq.empuje (clr);
El bucle "while" se continúa ejecutándose hasta que la cola no esté vacía y agrega cada cadena a la cadena "CLR". Ese valor en particular aparecería y se mostraría en el shell. Nuestro código de programa se completa aquí y está listo para ser ejecutado.
mientras(!pq.vacío())
fruta de cadena = PQ.arriba();
pq.estallido();
cout << fruit << " " << m[fruit] << endl;
cout << "Ending… \n";
regresar 0;
La compilación es bastante exitosa. Más que eso, todos los valores de cadena del vector se han mostrado en la carcasa junto con sus cantidades que se mapean a través de "mapa."Puede ver que el orden de la cantidad desciende en nuestro caso.
$ g ++ cola.CC
ps ./a.afuera
Conclusión:
Esto se trataba del simple ejemplo de una cola de prioridad con un comparador personalizado en C++. Lo hemos discutido dentro de un solo ejemplo en detalle manteniendo una forma simple y fácil. Hemos agregado el código en forma de fragmentos que ayuda a los lectores a comprenderlo bien.