Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Lenguaje C

Mapa en la biblioteca de plantillas estándar (STL) de C++ con ejemplo de impresión

¿Qué es std::map?

En C++, un MAPA es un contenedor asociativo que almacena elementos en forma de mapa. Cada elemento del mapa se compone de clave-valor 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 asignados 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á:

¿Por qué usar std::map?

Estas son las razones para usar el mapa:

Sintaxis:

Para declarar std::map, use esta sintaxis:

std::map<key_datatype, value_datatype>map_name; 

Por ejemplo:

map<string, int> my_map; 

Declaramos un mapa llamado my_map. El mapa tendrá una cadena como clave tipos de datos y enteros como valores tipo de datos.

Tipos de miembros:

Las funciones miembro pueden usar los siguientes tipos de miembros como parámetros o como tipo de retorno:

Funciones integradas

std::map viene con funciones incorporadas. Algunos de estos incluyen:

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 <iostream>
#include <string>
#include <map> 

using namespace std;
int main() {

	map<int, string> Students;

	Students.insert(std::pair<int, string>(200, "Alice"));

	Students.insert(std::pair<int, string>(201, "John"));

	cout << "Map size is: " << Students.size() << endl;

	cout << endl << "Default map Order is: " << endl;

	for (map<int, string>::iterator it = Students.begin(); it != Students.end(); ++it) {

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

Salida:

Aquí hay una captura de pantalla del código:

Explicación del código:

  1. Incluya el archivo de encabezado iostream en nuestro código para usar sus funciones.
  2. Incluya el archivo de encabezado de cadena en nuestro código para usar sus funciones.
  3. Incluya el archivo de encabezado del mapa en nuestro código para usar sus funciones.
  4. Incluya el espacio de nombres estándar en nuestro código para usar sus clases sin llamarlo.
  5. Llama a la función main(). El { marca el comienzo del cuerpo de la función.
  6. Cree un mapa llamado Estudiantes donde las claves serán números enteros y los valores serán cadenas.
  7. Insertar valores en el mapa Estudiantes. Se insertará una clave de 200 y un valor de Alice en el mapa.
  8. Insertar valores en el mapa Estudiantes. Se insertará una clave de 201 y un valor de John en el mapa.
  9. Use la función size() para obtener el tamaño del mapa llamado Students. Esto debería devolver un 2.
  10. Imprime algo de texto en la consola.
  11. Utilice un bucle for para crear un iterador denominado iterar sobre los elementos del mapa denominado Estudiantes.
  12. Imprima los valores del mapa Estudiantes en la consola.
  13. Fin del cuerpo del ciclo for.
  14. Fin del cuerpo de la función main().

Insertar datos en std::map

Puede ingresar elementos en std::map usando la función insert(). Recuerda 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:

El insertar_o_asignar() 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 <map>
#include <iostream>

using namespace std;

int main() {

	map<int, int> m{ {1,3} , {2,4} , {3,5} };

	m.insert({ 5, 6 });
	m.insert({ 1, 8 });

	m.insert_or_assign(1, 6);  
	
	cout << "Key\tElement\n";
	for (auto itr = m.begin(); itr != m.end(); ++itr) {
		cout << itr->first << '\t' << itr->second << '\n';
	}
	return 0;
}

Salida:

Aquí hay una captura de pantalla del código:

Explicación del código:

  1. Incluya el archivo de encabezado del mapa en nuestro código para usar sus funciones.
  2. Incluya el archivo de encabezado iostream en nuestro código para usar sus funciones.
  3. Incluya el espacio de nombres estándar en nuestro código para usar sus clases sin llamarlo.
  4. Llama a la función main(). El { marca el comienzo del cuerpo de la función.
  5. Cree un mapa llamado m donde las claves serán números enteros y los valores serán números enteros. Se han realizado tres entradas en el mapa.
  6. Insertar una nueva entrada en el mapa m. Se insertará una clave de 5 y un valor de 6 en el mapa.
  7. Intentando hacer una entrada en una clave ya existente. Dado que la clave 1 ya existe en el mapa, no se realizará la entrada.
  8. Utilizar 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.
  9. 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 mouse a la siguiente línea.
  10. Use un bucle for para crear un iterador llamado itr para iterar sobre los elementos del mapa llamado m.
  11. 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.
  12. Fin del cuerpo del bucle for a.
  13. El programa debe devolver valor al completarse con éxito.
  14. Fin del cuerpo de la función main().

Buscar 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 <iostream>
#include <string>
#include <map> 
using namespace std;
int main() {
	map<int, string> Students;
	Students.insert(std::pair<int, string>(200, "Alice"));
	Students.insert(std::pair<int, string>(201, "John"));
	std::map<int, string>::iterator it = Students.find(201);
	if (it != Students.end()) {
		std::cout << endl << "Key 201 has the value: => "<< Students.find(201)->second << '\n';
	}
}

Salida:

Aquí hay una captura de pantalla del código:

Explicación del código:

  1. Incluya el archivo de encabezado iostream en nuestro código para usar sus funciones sin obtener errores.
  2. Incluya el archivo de encabezado de cadena en nuestro código para usar sus funciones sin obtener errores.
  3. Incluya el archivo de encabezado del mapa en nuestro código para usar sus funciones sin obtener errores.
  4. Incluya el espacio de nombres estándar en nuestro código para usar sus clases sin llamarlo.
  5. Llama a la función main(). El { marca el comienzo del cuerpo de la función main().
  6. Cree un mapa llamado Estudiantes cuyas claves serán números enteros y cadenas de valores.
  7. Insertar valores en el mapa Estudiantes. Se insertará una clave de 200 y un valor de Alice en el mapa.
  8. Insertar valores en el mapa Estudiantes. Se insertará una clave de 201 y un valor de John en el mapa.
  9. Busque el valor asociado con una clave de 201.
  10. Utilice una instrucción if para comprobar si se encuentra el valor de la clave.
  11. Imprima el valor de la clave junto con algún texto en la consola.
  12. Fin del cuerpo de la instrucción if.
  13. Fin del cuerpo de la función main().

Eliminación de 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 <iostream>
#include <string>
#include <map>

using namespace std;
int main() {

	map<std::string, int> my_map;

	my_map.insert(std::make_pair("cow", 1));

	my_map.insert(std::make_pair("cat", 2));

	my_map["lion"] = 3;

	map<std::string, int>::iterator it = my_map.find("cat");

	my_map.erase(it);

	for (map<string, int>::iterator it = my_map.begin(); it != my_map.end(); ++it)

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

  return 0;
}

Salida:

Aquí hay una captura de pantalla del código:

Explicación del código:

  1. Incluya el archivo de encabezado iostream en nuestro código para usar sus funciones.
  2. Incluya el archivo de encabezado de cadena en nuestro código para usar sus funciones.
  3. Incluya el archivo de encabezado del mapa en nuestro código para usar sus funciones.
  4. Incluya el espacio de nombres estándar en nuestro código para usar sus clases sin llamarlo.
  5. Llama a la función main(). El { marca el comienzo del cuerpo de la función main().
  6. Cree un mapa llamado my_map cuyas claves serán cadenas y valores enteros.
  7. Insertar valores en el mapa my_map. Se insertará una clave de Vaca y un valor de 1 en el mapa.
  8. Insertar valores en el mapa my_map. Se insertará una clave de Cat y un valor de 2 en el mapa.
  9. Agregue un valor 3 en el mapa my_map con una clave de león.
  10. Cree un iterador para iterar sobre el mapa my_map buscando el gato clave.
  11. Eliminar el elemento señalado por el iterador.
  12. Use un iterador para iterar sobre los elementos del mapa my_map desde el principio hasta el final.
  13. Imprima el contenido del mapa my_map en la consola.
  14. El programa debe devolver la salida al completarse con éxito.
  15. Fin del cuerpo de la función main().

Resumen:


Lenguaje C

  1. Funciones de biblioteca estándar de C
  2. Operadores en C++ con Ejemplo:Qué es, Tipos y Programas
  3. C++ do...while bucle con ejemplos
  4. Declaración de caso de cambio de C ++ con EJEMPLO
  5. C++ Asignación dinámica de arreglos con ejemplo
  6. Punteros de C++ con ejemplos
  7. Sobrecarga de operadores de C++ con ejemplos
  8. Estructura C++ con ejemplo
  9. std::list en C++ con ejemplo
  10. Funciones de C++ con ejemplos de programas
  11. Diferencia entre estructura y clase:explicada con el ejemplo de C++