Menu
Coddy logo textTech

Crear un Mapa

Parte de la sección Lógica y Flujo del Journey de C++ de Coddy. Lección 24 de 56.

Ahora que entiendes qué es un map, aprendamos a crear uno y a añadirle pares clave-valor. Al declarar un std::map, debes especificar tanto el tipo de clave como el tipo de valor utilizando corchetes angulares.

Esta es la sintaxis básica para crear un map:

std::map<KeyType, ValueType> mapName;

Por ejemplo, para crear un map que almacene los nombres de los estudiantes como claves y sus puntuaciones de prueba como valores:

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

Para agregar elementos a tu map, puedes usar la notación de corchetes con la llave y después asignar un valor:

studentScores["Alice"] = 95;
studentScores["Bob"] = 87;
studentScores["Carol"] = 92;

Esto crea tres pares clave-valor en el mapa. El nombre de cada estudiante sirve como clave, lo que te permite recuperar rápidamente su puntuación correspondiente.

Para iterar sobre todos los elementos de un mapa, puedes usar un bucle for basado en range con auto. Cada elemento de un std::map es un par clave-valor, y puedes acceder a la clave usando .first y al valor usando .second:

for (const auto& pair : studentScores) {
    std::cout << pair.first << ": " << pair.second << std::endl;
}

Aquí, auto deduce automáticamente el tipo de cada elemento (un par clave-valor), pair.first te proporciona la clave (el nombre del estudiante) y pair.second te proporciona el valor (la puntuación). Ten en cuenta que std::map mantiene automáticamente sus elementos ordenados por clave, por lo que recorrer el mapa imprimirá las entradas en orden alfabético.

challenge icon

Desafío

Fácil

Crea un programa que construya un sistema de seguimiento de calificaciones de estudiantes usando un std::map. Tu programa almacenará los nombres de los estudiantes como claves y sus puntuaciones en las pruebas como valores.

Se proporcionarán las siguientes entradas:

  • Un entero n que representa el número de estudiantes
  • Después, n pares de entradas:
    • Una cadena que representa el nombre del estudiante
    • Un entero que representa la puntuación del estudiante

Tu programa debe:

  1. Crear un std::map<std::string, int> llamado grades
  2. Leer el número de estudiantes
  3. Para cada estudiante, leer su nombre y puntuación, y después añadirlos al mapa usando la notación de corchetes
  4. Después de añadir a todos los estudiantes, imprimir la información de cada estudiante en el formato mostrado a continuación
  5. Calcular e imprimir el número total de estudiantes almacenados en el mapa

Usa el siguiente formato de salida exacto:

Student Grades:\n[student1]: [score1]\n[student2]: [score2]\n[student3]: [score3]\n...\nTotal students: [number of students]

Los estudiantes deben imprimirse en el orden en que aparecen al iterar por el mapa (que será alfabético, ya que los mapas ordenan automáticamente por clave). Usa un bucle for basado en rangos para iterar por el mapa, acceder a cada par clave-valor e imprimir el nombre del estudiante seguido de su puntuación.

Pruébalo tú mismo

#include <iostream>
#include <map>
#include <string>
using namespace std;

int main() {
    // Lee el número de estudiantes
    int n;
    cin >> n;
    
    // Crea el map para almacenar las calificaciones
    map<string, int> grades;
    
    // TODO: Escribe tu código aquí
    // Lee el nombre y la puntuación de cada estudiante, luego añádelos al map
    
    
    // Imprime los resultados
    cout << "Student Grades:" << endl;
    // TODO: Usa un bucle for basado en rangos para imprimir la calificación de cada estudiante
    
    
    // Imprime el número total de estudiantes
    cout << "Total students: " << grades.size() << endl;
    
    return 0;
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Lógica y Flujo

Practica por tu cuenta: Compilador de C++ online