C++ Variables de tipo map

Enviado por jvilella el Mié, 08/12/2021 - 02:34

Requisitos:

El tipo de variable map permite asociar etiquetas a valores (cada etiqueta tiene un único valor asociado).

Por ejemplo, podemos usarlo para asociar a cada país la moneda que utiliza.

Lo primero que se ha de hacer para poder utilizar map es añadir al principio del código esta línea:

#include <map>

Una variable de tipo map se declara así:

map < tipo_de_las_etiquetas , tipo_de_los_valores >;

y se asignan y leen valores como en un vector pero usando la etiqueta como índice.

Por ejemplo:

map<string, string> paises_moneda;
paises_moneda["Espana"] = "euro";
paises_moneda["EEUU"] = "dolar";
paises_moneda["Singapur"] = "dolar";
paises_moneda["Inglaterra"] = "libra";
paises_moneda["Egipto"] = "libra";
paises_moneda["Marruecos"] = "dinar";
paises_moneda["Jordania"] = "dinar";
cout << "La moneda usada en Egipto es: " << paises_moneda["Egipto"] << endl;

El código anterior asocia a siete países las monedas que usa cada uno, y finalmente muestra por pantalla la moneda que se utiliza en Egipto.

Ahora, ¿cómo se puede acceder a todos los elementos (etiqueta-valor) que contiene un map? Utilizaremos una sintaxis especial de for. Con esta sintaxis en lugar de tener la posición en la que estamos tenemos el valor específico en el que estamos. Para obtener una asociación etiqueta-valor de un map asumimos que es un pair, en este caso es un pair de string y string porque tanto las etiquetas como los valores son strings. El formato de esta sintaxis de for es for (elemento : conjunto), por lo tanto en este caso el elemento es una variable de tipo pair<string,string> y el conjunto es la variable de tipo map:

Por ejemplo el siguiente código muestra todas etiquetas y valores del map:

for (pair<string, string> it : paises_moneda) {
  cout << it.first << " = " << it.second << endl;
}

Podemos mirar si una etiqueta existe en el map:

string pais;
cin >> pais;
if (paises_moneda.count(pais)) {
  cout << "En " << pais << " se usa la siguiente moneda: " << paises_moneda[pais];
} else {
  cout << "No conozco que moneda se usa en " << pais;
}

Por último, igual que en un set, eliminar un elemento de un map es tan fácil como insertarlo, en este caso mediante su función erase:

paises_moneda.erase("Singapur");

 

Printer Friendly, PDF & Email

Etiquetas

Añadir nuevo comentario

Texto sin formato

  • No se permiten etiquetas HTML.
  • Saltos automáticos de líneas y de párrafos.
  • Las direcciones de correos electrónicos y páginas web se convierten en enlaces automáticamente.