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

Dominando std::map en C++: Guía completa con ejemplos de código

¿Qué es std::map?

En la Biblioteca Estándar de Plantillas (STL) de C++, std::map es un contenedor asociativo que almacena elementos como pares clave-valor. Cada clave es única y el contenedor mantiene automáticamente los elementos ordenados según la función de comparación de la clave (por defecto, std::less). Los valores pueden ser de cualquier tipo y se acceden a través de sus claves correspondientes.

Por qué usar std::map

Sintaxis

Declare un map con:

std::map<TipoClave, TipoValor> nombreMap;

Ejemplo:

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

Tipos miembro

Funciones integradas

Iteración sobre elementos del map

Los iteradores dan control total sobre el orden de recorrido, que siempre está ordenado por clave.

#include <iostream>
#include <string>
#include <map>
using namespace std;
int main() {
    map<int, string> estudiantes;
    estudiantes.insert({200, "Alice"});
    estudiantes.insert({201, "John"});
    cout << "Tamaño del map es: " << estudiantes.size() << endl;
    cout << endl << "Orden por defecto del map:" << endl;
    for (auto it = estudiantes.begin(); it != estudiantes.end(); ++it) {
        cout << it->first << ": " << it->second << endl;
    }
    return 0;
}

Salida:

Dominando std::map en C++: Guía completa con ejemplos de código

Inserción de datos en std::map

Use insert() para nuevas entradas; rechaza silenciosamente duplicados. Para sobrescribir una clave existente, use insert_or_assign().

#include <map>
#include <iostream>
using namespace std;
int main() {
    map<int, int> m{{1,3},{2,4},{3,5}};
    m.insert({5,6}); // añade nuevo par
    m.insert({1,8}); // ignorado, clave 1 ya existe
    m.insert_or_assign(1,6); // actualiza clave 1 a valor 6
    cout << "Clave\tElemento\n";
    for (auto& p : m) {
        cout << p.first << '\t' << p.second << '\n';
    }
    return 0;
}

Salida:

Dominando std::map en C++: Guía completa con ejemplos de código

Búsqueda en un map

Encontrar una clave es sencillo con find(). Si la clave existe, el iterador devuelto apunta al elemento; de lo contrario se devuelve end().

#include <iostream>
#include <map>
using namespace std;
int main() {
    map<int, string> estudiantes;
    estudiantes.insert({200, "Alice"});
    estudiantes.insert({201, "John"});
    if (auto it = estudiantes.find(201); it != estudiantes.end()) {
        cout << "Clave 201 tiene valor: " << it->second << endl;
    }
    return 0;
}

Salida:

Dominando std::map en C++: Guía completa con ejemplos de código

Eliminación de datos de un map

Los elementos pueden eliminarse por clave o por iterador. El método erase() invalida solo iteradores que apuntan al elemento eliminado.

#include <iostream>
#include <map>
using namespace std;
int main() {
    map<string, int> miMap;
    miMap["vaca"] = 1;
    miMap["gato"] = 2;
    miMap["leon"] = 3;
    if (auto it = miMap.find("gato"); it != miMap.end()) {
        miMap.erase(it);
    }
    for (auto& p : miMap) {
        cout << p.first << ": " << p.second << endl;
    }
    return 0;
}

Salida:

Dominando std::map en C++: Guía completa con ejemplos de código

Resumen

Lenguaje C

  1. Dominando funciones de la biblioteca estándar de C: Guía práctica
  2. Operadores en C++ explicados: Tipos, ejemplos y programas de muestra
  3. Bucle do‑while en C++: Sintaxis, ejemplos prácticos y bucles anidados
  4. Dominando switch-case en C++: Sintaxis, uso y ejemplos prácticos
  5. Asignación dinámica de arrays en C++: Guía práctica con ejemplos de código
  6. Dominando punteros en C++: Conceptos, ejemplos y aplicaciones prácticas
  7. Sobrecarga de operadores en C++: Guía práctica con ejemplos de código
  8. Structs en C++ explicados con un ejemplo práctico
  9. Dominar std::list en C++: Sintaxis, Funciones y Ejemplos Prácticos
  10. Funciones en C++ Explicadas con Ejemplos de Código Prácticos
  11. Struct vs Class en C++: Diferencias Clave, Sintaxis y Mejores Casos de Uso