cpp-que-son-maps

Qué son y cómo usar los diccionarios en C++

Un Map es una colección que almacena pares clave-valor. Permiten realizar búsquedas, inserciones y eliminaciones de manera eficiente.

La clase std::map de la biblioteca estándar de C++ es la implementación de esta estructura de datos.

Las claves en un std::map deben ser únicas y se utilizan para acceder a los valores correspondientes.

Declaración de maps

Para declarar un map en C++, se utiliza la siguiente sintaxis:

#include <map>

std::map<tipoClave, tipoValor> nombremap;
  • tipoClave: Es el tipo de datos de las claves.
  • tipoValor: Es el tipo de datos de los valores.
  • nombremap: Es el identificador del map.

Por ejemplo, si queremos crear un map que almacene nombres de personas y sus edades, podemos usar la siguiente sintaxis:

#include <map>
#include <string>

std::map<std::string, int> edades;

Inicialización de un map

Una vez declarado el map, debemos inicializarlo antes de usarlo. Aquí te mostramos cómo hacerlo:

Puedes crear un map vacío y luego agregarle elementos:

std::map<std::string, int> edades; // map vacío

También puedes inicializar un map con valores específicos utilizando la lista de inicialización:

std::map<std::string, int> edades = {
    {"Luis", 25},
    {"María", 30},
    {"Pedro", 28}
};

Uso básico del map

Añadir elementos a un map

Para añadir elementos a un map, puedes usar el operador de índice [] o el método insert:

std::map<std::string, int> edades;

edades["Luis"] = 32; // Usando el operador de índice
edades.insert({"Ana", 22}); // Usando el método insert

Acceder a elementos de un map

Los elementos de un map se pueden acceder mediante sus claves:

std::map<std::string, int> edades = {
    {"Luis", 25},
    {"María", 30}
};

int edadDeLuis = edades["Luis"];
std::cout << "La edad de Luis es: " << edadDeLuis << std::endl;

Alternativamente podemos usar el método at, que proporciona acceso seguro a los elementos (lanzando una excepción si la clave no existe).

int segundo_elemento = edades.at(1);

Modificar elementos de un map

Para modificar el valor asociado a una clave existente, simplemente asigna un nuevo valor a esa clave:

std::map<std::string, int> edades = {
    {"María", 30}
};

edades["María"] = 35; // Modificando el valor
std::cout << "La edad de María actualizada es: " << edades["María"] << std::endl;

Eliminar elementos de un map

Para eliminar un elemento del map, utiliza el método erase:

std::map<std::string, int> edades = {
    {"Pedro", 28}
};

edades.erase("Pedro"); // Elimina el elemento con clave "Pedro"

Enumerar elementos en un map

Para recorrer todos los elementos de un map, puedes usar un bucle for con iteradores:

std::map<std::string, int> edades = {
    {"Luis", 25},
    {"María", 30}
};

for (const auto& item : edades) {
    std::cout << "Nombre: " << item.first << ", Edad: " << item.second << std::endl;
}

Limpiar todo el map

Para eliminar todos los elementos del map, usa el método clear:

edades.clear(); // Elimina todos los elementos del map

Propiedades y métodos útiles

Ejemplos prácticos