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 mapa, aprendamos cómo crear uno y añadirle pares clave-valor. Al declarar un std::map, necesitas especificar tanto el tipo de clave como el tipo de valor usando corchetes angulares.

Aquí está la sintaxis básica para crear un mapa:

std::map<KeyType, ValueType> mapName;

Por ejemplo, para crear un mapa que almacene nombres de estudiantes como claves y sus puntuaciones de exámenes como valores:

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

Para añadir elementos a tu mapa, puedes usar la notación de corchetes con la clave y luego 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 la clave 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 rangos con auto. Cada elemento en 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 da la clave (el nombre del estudiante), y pair.second te da el valor (la puntuación). Ten en cuenta que std::map mantiene automáticamente sus elementos ordenados por clave, por lo que iterar sobre 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 utilizando un std::map. Tu programa almacenará los nombres de los estudiantes como claves y sus puntuaciones de exámenes como valores.

Se proporcionarán las siguientes entradas:

  • Un entero n que representa el número de estudiantes
  • Luego 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, luego agregarlos al mapa utilizando la notación de corchetes
  4. Después de agregar a todos los estudiantes, imprimir la información de cada estudiante en el formato que se muestra a continuación
  5. Calcular e imprimir el número total de estudiantes almacenados en el mapa

Utiliza exactamente el siguiente formato de salida:

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 a través del mapa (que será en orden alfabético, ya que los mapas se ordenan automáticamente por clave). Utiliza un bucle for basado en rangos para iterar a través del mapa, accediendo a cada par clave-valor e imprimiendo el nombre del estudiante seguido de su puntuación.

Pruébalo tú mismo

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

int main() {
    // Leer el número de estudiantes
    int n;
    cin >> n;
    
    // Crear el mapa para almacenar las calificaciones
    map<string, int> grades;
    
    // TODO: Escribe tu código aquí
    // Leer el nombre y la puntuación de cada estudiante, luego agregarlos al mapa
    
    
    // Imprimir los resultados
    cout << "Student Grades:" << endl;
    // TODO: Usar un bucle for basado en rangos para imprimir la calificación de cada estudiante
    
    
    // Imprimir 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