¿Qué es std :: map?
En C ++, un MAP es un contenedor asociativo que almacena elementos en forma mapeada. Cada elemento del mapa se compone de un valor-clave y un valor asignado. Dos valores asignados no pueden compartir los mismos valores clave.
Los valores clave son buenos para clasificar e identificar elementos de forma única. Los valores mapeados son para almacenar contenido asociado con la clave. Los dos pueden diferir en tipos, pero el tipo de miembro los combina a través de un tipo de par que combina ambos.
En este tutorial de C ++, aprenderá:
- ¿Qué es std :: map?
- ¿Por qué usar std :: map?
- Sintaxis:
- Tipos de miembros:
- Funciones integradas
- Iterando sobre elementos del mapa
- Insertar datos en std :: map:
- Buscando en un mapa
- Eliminar datos de un mapa
¿Por qué usar std :: map?
Aquí están las razones para usar el mapa:
- std :: map almacena claves únicas solo en orden de clasificación según los criterios de clasificación elegidos.
- Es fácil y rápido buscar elementos usando la clave.
- Solo se adjunta un elemento a cada llave.
- std :: map se puede utilizar como una matriz asociativa.
- std :: map se puede implementar usando árboles binarios (balanceados).
Sintaxis:
Para declarar std :: map, use esta sintaxis:
std::mapmap_name;
- Key_datatype denota el tipo de datos de las claves del mapa.
- Value_datatype denota el tipo de datos de los valores correspondientes a las claves del mapa.
- Map_name es el nombre del mapa.
Por ejemplo:
mapmy_map;
Declaramos un mapa llamado my_map. El mapa tendrá una cadena como tipos de datos clave y un entero como tipo de datos de valores .
Tipos de miembros:
Las funciones miembro pueden usar los siguientes tipos de miembros como parámetros o como tipo de retorno:
- key_type: Key (el primer parámetro de la plantilla)
- mapped_type: T (El segundo parámetro de la plantilla)
- key_compare: Compare (el tercer parámetro de la plantilla)
- allocator_type: Alloc (el cuarto parámetro de la plantilla)
- value_type: par
- value_compare: clase de función anidada para comparar elementos
- referencia: allocator_type :: referencia
- const_reference: allocator_type :: const_reference
- puntero: allocator_type :: puntero
- const_pointer: allocator_type :: const_pointer
- iterador: un iterador bidireccional para value_type
- const_iterator: un iterador bidireccional al const value_type
- reverse_iterator: un iterador inverso
- const_reverse_iterator: un iterador inverso constante
- diferencia_tipo: ptrdiff_t
- size_type: size_t
Funciones integradas
std :: map viene con funciones incorporadas. Algunos de estos incluyen:
- begin (): esta función devuelve el iterador al primer elemento del mapa.
- size (): esta función devuelve el número de elementos en un mapa.
- vacío (): esta función devuelve un valor booleano que indica si un mapa está vacío.
- insertar (par (clave, valor)): esta función inserta un nuevo par clave-valor en un mapa.
- find (val): esta función le da el iterador al elemento val si se encuentra. De lo contrario, devolverá m.end ().
- Borrar (posición del iterador): esta función elimina el elemento en la posición señalada por el iterador.
- borrar (const g) : esta función elimina el valor clave g de un mapa.
- Borrar (): esta función elimina todos los elementos de un mapa.
Iterando sobre elementos del mapa
Puede iterar sobre los elementos del mapa. Simplemente necesitamos crear un iterador y usarlo para esto. Por ejemplo:
Ejemplo 1:
#include#include #include
Producción:
Aquí hay una captura de pantalla del código:
Explicación del código:
- Incluya el archivo de encabezado de iostream en nuestro código para usar sus funciones.
- Incluya el archivo de encabezado de cadena en nuestro código para usar sus funciones.
- Incluya el archivo de encabezado del mapa en nuestro código para usar sus funciones.
- Incluya el espacio de nombres estándar en nuestro código para usar sus clases sin llamarlo.
- Llame a la función main (). {Marca el comienzo del cuerpo de la función.
- Cree un mapa llamado Estudiantes donde las claves serán números enteros y los valores serán cadenas.
- Inserte valores en el mapa Estudiantes. Se insertará una clave de 200 y un valor de Alice en el mapa.
- Inserte valores en el mapa Estudiantes. Se insertará una clave de 201 y un valor de John en el mapa.
- Utilice la función size () para obtener el tamaño del mapa denominado Estudiantes. Esto debería devolver un 2.
- Imprime algo de texto en la consola.
- Utilice un bucle for para crear un iterador con el nombre de iterar sobre los elementos del mapa llamado Estudiantes.
- Imprima los valores del mapa Estudiantes en la consola.
- Fin del cuerpo del bucle for.
- Fin del cuerpo de la función main ().
Insertar datos en std :: map
Puede ingresar elementos en std :: map usando la función insert (). Recuerde que las claves std :: map deben ser únicas.
Entonces, primero verifica si cada clave está presente en el mapa. Si está presente, la entrada no se insertará, pero devuelve el iterador de la entrada existente. Si no está presente, se inserta la entrada.
La función tiene las siguientes variaciones:
- insertar (par): con esta variación, se inserta un par clave-valor en el mapa.
- insert (start_itr, end_itr): con esta variación, las entradas se insertarán dentro del rango definido por start_itr y end_itr de otro mapa.
La función insert_or_assing () funciona de la misma manera que la función insert (), pero si la clave dada ya existe en el mapa, su valor será modificado.
Ejemplo 2:
#include
Producción:
Aquí hay una captura de pantalla del código:
Explicación del código:
- Incluya el archivo de encabezado del mapa en nuestro código para usar sus funciones.
- Incluya el archivo de encabezado de iostream en nuestro código para usar sus funciones.
- Incluya el espacio de nombres estándar en nuestro código para usar sus clases sin llamarlo.
- Llame a la función main (). {Marca el comienzo del cuerpo de la función.
- Cree un mapa llamado m donde las claves serán enteros y los valores serán enteros. Se han realizado tres entradas en el mapa.
- Insertar una nueva entrada en el mapa m. Se insertará una clave de 5 y un valor de 6 en el mapa.
- Intentando hacer una entrada en una clave ya existente. Dado que la clave 1 ya existe en el mapa, no se realizará la entrada.
- Usar la función insert_or_assign () para insertar o modificar una entrada existente. Dado que la clave 1 ya existe, su valor se cambiará a 6.
- Imprime algo de texto en la consola. El carácter "\ t" crea un espacio horizontal mientras que el carácter "\ n" mueve el cursor del ratón a la siguiente línea.
- Use un bucle for para crear un iterador llamado itr para iterar sobre los elementos del mapa llamado m.
- Imprime los valores del mapa m en la consola. El carácter "\ t" crea un espacio horizontal entre cada tecla y su valor correspondiente. Por el contrario, el carácter "\ n" mueve el cursor del mouse a la siguiente línea después de cada iteración.
- Fin del cuerpo del for a loop.
- El programa debe devolver valor una vez completado con éxito.
- Fin del cuerpo de la función main ().
Buscando en un mapa
Podemos usar la función find () para buscar elementos en un mapa por sus claves. Si no se encuentra la clave, la función devuelve std :: map :: end. De lo contrario, se devolverá un iterador del elemento buscado.
Ejemplo 2:
#include#include #include
Producción:
Aquí hay una captura de pantalla del código:
Explicación del código:
- Incluya el archivo de encabezado de iostream en nuestro código para usar sus funciones sin obtener errores.
- Incluya el archivo de encabezado de cadena en nuestro código para usar sus funciones sin obtener errores.
- Incluya el archivo de encabezado del mapa en nuestro código para usar sus funciones sin obtener errores.
- Incluya el espacio de nombres estándar en nuestro código para usar sus clases sin llamarlo.
- Llame a la función main (). El {marca el comienzo del cuerpo de la función main ().
- Cree un mapa llamado Estudiantes cuyas claves serán números enteros y cadenas de valores.
- Inserte valores en el mapa Estudiantes. Se insertará una clave de 200 y un valor de Alice en el mapa.
- Inserte valores en el mapa Estudiantes. Se insertará una clave de 201 y un valor de John en el mapa.
- Busque el valor asociado con una clave de 201.
- Utilice una instrucción if para comprobar si se encuentra el valor de la clave.
- Imprima el valor de la clave junto con un texto en la consola.
- Fin del cuerpo de la declaración if.
- Fin del cuerpo de la función main ().
Eliminar datos de un mapa
Podemos usar la función erase () para eliminar un valor de un mapa. Simplemente creamos un iterador que apunta al elemento a eliminar. Luego, el iterador se pasa a la función erase ().
Ejemplo 3:
#include#include #include
Producción:
Aquí hay una captura de pantalla del código:
Explicación del código:
- Incluya el archivo de encabezado de iostream en nuestro código para usar sus funciones.
- Incluya el archivo de encabezado de cadena en nuestro código para usar sus funciones.
- Incluya el archivo de encabezado del mapa en nuestro código para usar sus funciones.
- Incluya el espacio de nombres estándar en nuestro código para usar sus clases sin llamarlo.
- Llame a la función main (). El {marca el comienzo del cuerpo de la función main ().
- Cree un mapa llamado my_map cuyas claves serán cadenas y valores enteros.
- Inserte valores en el mapa my_map. Se insertará una clave de vaca y un valor de 1 en el mapa.
- Inserte valores en el mapa my_map. Se insertará una clave de Cat y un valor de 2 en el mapa.
- Agregue un valor 3 en el mapa my_map con la clave de un león.
- Cree un iterador para iterar sobre el mapa my_map buscando el gato clave.
- Elimina el elemento al que apunta el iterador.
- Utilice un iterador para iterar sobre los elementos del mapa my_map desde el principio hasta el final.
- Imprima el contenido del mapa my_map en la consola.
- El programa debe devolver la salida una vez finalizado con éxito.
- Fin del cuerpo de la función main ().
Resumen:
- Un mapa es un contenedor asociativo que almacena elementos en forma mapeada.
- Cada elemento del mapa tiene un valor clave y un valor asignado.
- En un mapa, dos valores asignados no pueden compartir valores clave.
- Los valores clave ayudan a clasificar e identificar elementos de forma única.
- Los valores mapeados ayudan a almacenar el contenido asociado con la clave.
- El mapa de C ++ almacena claves únicas en orden ordenado.
- Para trabajar con el mapa de C ++, creamos un iterador para iterar sobre los elementos.
- Con el iterador, podemos realizar tareas como buscar y eliminar elementos del mapa.