Funciones del mapa C ++

Funciones del mapa C ++
“Los mapas son contenedores asociativos que se utilizan para almacenar objetos de manera mapeada. Cada clave en un par de valores clave que contiene todos los componentes de un mapa es distinta. Las claves se utilizan para ordenar, pero cada clave tiene un conjunto de valores relacionados. Los datos podrían agregarse y eliminarse cuando sea necesario. En el lenguaje de programación C ++, los mapas contienen elementos creados mediante la combinación de un valor clave y un valor definido.

Para dos propósitos principales, los programadores de C ++ pueden encontrar útil la estructura del mapa. Primero, mediante el uso de la clave, un mapa permite una accesibilidad rápida y fácil del valor. Crear cualquier tipo de índice o puntero puede beneficiarse de este atributo. Una clave debe ser única en todo el marco de datos integrado, que el mapa proporciona para hacer. Esto evita la duplicación de datos; Por lo tanto, es otro beneficio de usar el mapa.

Por ejemplo, si está creando una aplicación comercial y tiene que mantener los valores de los activos por signo de ticker, un mapa es un enfoque útil debido a estos dos beneficios. Un mapa sería un método eficiente para proporcionar y verificar el clima existente en muchas ciudades de todo el mundo si hubiéramos estado desarrollando una aplicación meteorológica. Probablemente usaremos un mapa en un mercado en línea para localizar productos por marcas o categorías."

Cuándo evitar usar un mapa C ++?

La función del mapa de C ++ es adecuada para localizar valores de manera eficiente por clave. Pero, encontrar elementos del mapa mediante el uso de un entero implica atravesar el mapa completo una vez. Iterando a través de un mapa podría llevar mucho tiempo a medida que un mapa crece en tamaño si nos gustaría poder localizar valores en él. El módulo Boost Boost proporciona un mapa bidireccional, lo que lo hace más efectivo cuando obtenemos los datos con frecuencia. Debido a que el módulo C ++ estándar no contiene este modelo de datos, el usuario debe adquirir la biblioteca Boost en cada computadora donde se ejecute el programa o integrar el paquete Boost como parte de la vinculación estática.

Es posible que un mapa no sea la mejor estructura para emplear si nos damos cuenta de que necesitamos encontrar un mapa por elemento en una aplicación directa. Use una matriz C ++, búfer, pila o cualquier otro tipo de datos que pueda hacer que la aplicación sea más fácil de entender y más efectiva.

Discutamos el funcionamiento de las funciones del mapa en c++.

Ejemplo no 1

Ejecutaremos el código en este caso para mostrar cómo implementar funciones de mapa. Podemos iterar los componentes del mapa. Para hacer esto, solo necesitamos construir un iterador y luego utilizarlo.

#incluir
#incluir
#incluir
usando el espacio de nombres STD;
int main ()

mapa asignación1;
tarea1.insertar (par(2, 60));
tarea1.insertar (par(4, 80));
tarea1.insertar (par(6, 70));
tarea1.insertar (par(8, 90));
tarea1.insertar (par(10, 50));
tarea1.insertar (par(12, 80));
Asignación1 [14] = 40;
mapa:: iterator ITR;
cout << "\nThe map of the assignment1 is : \n";
cout << "\tKEY\tELEMENT\n";
para (ITR = Asignación1.comenzar(); ITR != Asignación1.fin(); ++ itr)
cout << '\t' << itr->primero << '\t' << itr->segundo
<< '\n';

cout << endl;
mapa Asignación2 (Asignación1.begin (), asignación1.fin());
cout << "\nThe map of the assignment2 after"
<< " assign from assignment1 is : \n";
cout << "\tKEY\tELEMENT\n";
para (ITR = Asignación2.comenzar(); ITR != Asignación2.fin(); ++ itr)
cout << '\t' << itr->primero << '\t' << itr->segundo
<< '\n';

cout << endl;

Aquí vamos a integrar los archivos de encabezado requeridos. y al comienzo del código. Ahora invocamos la función principal (). Utilizaremos el comando mapa. Dentro de este comando, inicializamos dos enteros. Ahora tenemos que insertar diferentes valores aleatorios de elementos. Entonces hemos estado usando la función insert ().

El argumento de "par" tendrá dos enteros. Especificamos los valores de 6 tareas diferentes. Ahora tenemos que utilizar otro método para introducir el valor en un mapa. Luego imprimiremos la asignación de mapa utilizando el comando mapa. Junto con esto, usamos un iterador. La declaración de "cout" se está utilizando para imprimir la línea. Entonces la declaración "cout" se utilizará para mostrar las claves y los elementos. Luego hacemos un incremento en el valor de "ITR". A continuación, usaremos la declaración "Cout". Hemos creado un puntero que apunta al iterador. Usaremos el término 'endl' para codificar en la siguiente línea.

Ahora asignaremos los elementos de la asignación1 a la tarea2. Volveremos a usar el comando mapa. Junto con esto, hemos estado utilizando la tarea de función Begin () y End (). Estas funciones se utilizan para iniciar y terminar los valores de la asignación1. Ahora demostraremos todos los elementos del mapa necesario. La instrucción "Cout" se aplicará para imprimir la línea "El mapa de la asignación2 después de la asignación de la asignación1 es". Entonces se usa "Cout" para mostrar las teclas y los elementos.

Una vez más, aplicamos el bucle "para". Tenemos que satisfacer la condición. Luego hacemos un incremento en el iterador. Construiremos el puntero del primer y segundo elemento de la asignación1. Para iniciar el código desde la nueva línea, usamos "Endl". Ahora eliminaremos todos los elementos hasta el elemento que tiene el valor de clave "3" en la asignación1.

cout << "\nassignment2 after eliminating the "
"Elementos que tienen el valor clave de menos de 3: \ n";
cout << "\tKEY\tELEMENT\n";
Tarea 2.borrar (asignación2.begin (), asignación2.encontrar (3));
para (ITR = Asignación2.comenzar(); ITR != Asignación2.fin(); ++ itr)
cout << '\t' << itr->primero << '\t' << itr->segundo
<< '\n';

int n;
n = Asignación2.borrar (4);
cout << "\nassignment2.erase(4) : ";
cout << n << " removed \n";
cout << "\tKEY\tELEMENT\n";
para (ITR = Asignación2.comenzar(); ITR != Asignación2.fin(); ++ itr)
cout << '\t' << itr->primero << '\t' << itr->segundo
<< '\n';

cout << endl;
cout << "assignment1.lower_bound(10) : "
<< "\tKEY = ";
cout << assignment1.lower_bound(10)->primero << '\t';
cout << "\tELEMENT = " << assignment1.lower_bound(10)->segundo
<< endl;
cout << "assignment1.upper_bound(10) : "
<< "\tKEY = ";
cout << assignment1.upper_bound(10)->primero << '\t';
cout << "\tELEMENT = " << assig>nment1.superior_bound (10)-> segundo
<< endl;
regresar 0;

La declaración de "cout" se está empleando para imprimir la declaración "Asignación2 después de eliminar los elementos que tienen el valor clave inferior a 3". La declaración "cout" también imprime las teclas y sus valores. Hemos aplicado la función ERASE (). Aquí hemos estado usando el método Begin (). Debido a esta función, comienza los valores clave de la asignación2. Luego tenemos que utilizar el método find () para adquirir el elemento en el mapa. Usamos la función begin () y end (), que está asociada con el iterador. Luego construimos el puntero del primer y segundo elemento del iterador y usamos la instrucción "Cout" para imprimir estos valores.

Ahora queremos eliminar el elemento que tiene el valor clave 4. Al hacer esto, tenemos que inicializar la variable "n". El tipo de datos de esta variable es un entero. Entonces usaremos la función ERASE (). Esta función contiene el parámetro del valor que queremos eliminar. La declaración "cout" se utilizará para eliminar ese elemento. Una vez más, hemos estado usando el bucle "para" y el puntero del iterador. Imprimiremos el límite inferior y el límite superior del mapa para la asignación1 utilizando la declaración "cout".

En la siguiente línea, utilizaremos la declaración "Cout" para crear un puntero que apunte al segundo valor de la asignación1. También ingresamos la palabra clave "endl" para ir a la siguiente línea para codificar. Ahora se llamará al método de asignación1 superior_bound (). El puntero se creará para señalar el segundo valor del límite superior de la asignación1.

Ejemplo no 2

En esta ilustración, el valor clave y el valor vinculado con la clave tienen diferentes tipos de datos. No es posible configurar los valores uno a la vez; Deben ser proporcionados en parejas.

#incluir
#incluir
#incluir
#incluir
usando el espacio de nombres STD;
int main ()

mapa Trabajadores;
Trabajadores [221] = "anikaa";
Trabajadores [320] = "Zeeshan";
Trabajadores [345] = "Daniyal";
Trabajadores [237] = "Dania";
Trabajadores [189] = "azka";
cout << "Workers[190]=" << Workers[237] << endl << endl;
cout << "Size of the map: " << Workers.size() << endl;
cout << endl << "The Original Order:" << endl;
para (map :: iterator jj = trabajadores.comenzar(); JJ!= Trabajadores.fin(); ++ jj)

cout << (*jj).first << ": " << (*jj).second << endl;

cout << endl << "The Inverse Order:" << endl;
para (map :: reverse_iterator jj = trabajadores.rbegin (); JJ!= Trabajadores.desgarrar(); ++ jj)

cout << (*jj).first << ": " << (*jj).second << endl;

Al comienzo del programa, incluiremos cuatro bibliotecas importantes, que incluyen, y . Después de todo, el espacio de nombres estándar se utilizará como un STD. Construimos el mapa de los trabajadores. Proporcionaremos dos tipos de datos como argumentos del mapa. El tipo de datos incluye entero y cadena. Ahora vamos a asignar las ID a los trabajadores respectivamente. Utilizamos el formato del índice de matriz para asignar los valores. La declaración de "cout" se está utilizando para mostrar el nombre del trabajador cuya identificación es 190.

Además, hemos estado utilizando la instrucción "Cout" para mostrar el tamaño del mapa. El tamaño se imprimirá después de la declaración "tamaño del mapa". A continuación, la instrucción "Cout" se utilizará para mostrar el orden original de las IDS. Dentro de lo bucle, usaremos el comando "mapa". Inicializamos la cadena y el iterador. Luego comenzamos el mapa de los trabajadores utilizando el método Begin (). Para terminar el mapa de los trabajadores, hemos estado utilizando la función End ().

En la última parte del bucle "para", hemos aumentado el valor del iterador. La declaración "cout" se utilizará para mostrar los elementos del mapa. Luego volveremos a usar la declaración "Cout" para mostrar la línea "el orden inverso". Utilizaremos el método Begin () y End () para iniciar y terminar los elementos del mapa. Iteraremos los elementos hasta que se cumpla la condición. Al final, la declaración "cout" se usa para imprimir los elementos de manera inversa.

Ejemplo no 3

Algunas de las funciones del mapa se utilizan en el programa siguiente. Antes de iterar por dicho valor que coincida con una clave específica, inicialmente agrega otros elementos al mapa.

#incluir
#incluir
#incluir
#incluir
usando el espacio de nombres STD;
int main ()

mapa Std;
Std.insertar (std :: par(736, "Jamil"));
Std.insertar (std :: par(233, "dua"));
Std.insertar (std :: par(837, "AIMA"));
Std [348] = "snobar";
Std [646] = "Tania";
cout << "Map Size: " << Std.size() << endl << endl;
cout << endl << "Real order of the values:" << endl;
para (map :: iterator iter = std.comenzar(); iter!= STD.fin(); ++ iter)

cout << (*iter).first << ": " << (*iter).second << endl;

std :: mapa:: iterator it = std.encontrar (348);
si se != STD.fin())
std :: cout < " << Std.find(348)->segundo << '\n';

En primer lugar, incorporaremos los archivos de encabezado. El archivo de encabezado trata con las cadenas en el código. El archivo de encabezado se ocupa de las funcionalidades de entrada y salida. El archivo de encabezado se ocupa del mapa. Y el último archivo de encabezado se ocupa de las funcionalidades de utilidad. Comencemos la codificación en el cuerpo de la función principal () 0F. Ejecutaremos el comando "mapa". Con la ayuda de esto, inicializaremos un mapa de las claves y sus valores apropiados. El tipo de datos de las claves es un entero, y el tipo de datos de sus valores es "cadena".

Ahora insertaremos las marcas y los nombres de los estudiantes en el mapa con la ayuda de la función Insert (). Usamos esta función para agregar los datos de los tres estudiantes. A continuación, usaremos el formato de índice de matriz para insertar las marcas y nombres de los estudiantes. Los datos de dos estudiantes se insertarán utilizando el formato de índice de matriz.

Además, aplicaremos el método "cout". La instrucción "Cout" muestra la línea "Tamaño del mapa" en la pantalla antes del mapa. Dentro de esta declaración de "cout", usaremos el método size (). Ahora mostraremos los nombres y los números de los estudiantes en el formato original. La declaración "cout" se está utilizando para imprimir el texto "orden real de los valores". Utilizamos el comando "Endl" en ambos lados de este texto para imprimir este texto en una línea separada. Ahora hemos estado usando el bucle "para". También utilizaremos la función Begin () para comenzar a imprimir el primer nombre y las marcas del estudiante en un mapa.

Del mismo modo, el método End () se está utilizando para mostrar el apellido del estudiante en un mapa. La declaración "cout" mostrará estos primeros y últimos valores. Al final del programa, usaremos otra función de mapa para buscar (). Queremos descubrir el nombre del estudiante, cuyo número es 348. Entonces llamaremos al método find (). Usamos std :: map y std :: iterator. Entonces hemos estado usando la condición "si". Aplicamos la función de mapa final () para cumplir con la condición "si". Para imprimir el nombre del estudiante cuyas marcas son 348, emplearemos el método STD :: Cout. También creamos el puntero, que apunta al segundo valor del mapa.

Conclusión

Hemos discutido un mapa C ++ y cómo utilizar las funciones de mapas en este artículo. Demostramos brevemente agregar elementos y recuperarlos mediante el uso del mapa en diferentes ejemplos. Los mapas son el componente de la biblioteca de plantillas estándar. Los mapas son receptáculos asociativos que contienen pares de valor clave ordenados; Casi todas las clave son distintas y solo se pueden agregar o eliminar por completo. Los valores clave pueden tener sus valores relacionados que se modificarán. En un mapa, los valores definidos contienen los datos relacionados con la clave, mientras que los valores de clave se utilizan típicamente para organizar e identificar componentes particulares.