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.
Desafío
FácilCrea 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
nque representa el número de estudiantes - Después,
npares de entradas:- Una cadena que representa el nombre del estudiante
- Un entero que representa la puntuación del estudiante
Tu programa debe:
- Crear un
std::map<std::string, int>llamadogrades - Leer el número de estudiantes
- Para cada estudiante, leer su nombre y puntuación, y después añadirlos al mapa usando la notación de corchetes
- Después de añadir a todos los estudiantes, imprimir la información de cada estudiante en el formato mostrado a continuación
- 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;
}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
1Punteros y memoria
¿Qué es un puntero?Operador de direcciónOperador de desreferenciaPunteros nulosPunteros y arraysMemoria dinámica con 'new'Liberar memoria con 'delete'Resumen: Práctica de punteros4Mapas (Pares Clave-Valor)
Introducción a std::mapCrear un MapaAcceder y Modificar ValoresComprobar ClavesEliminar ParesIterar sobre un MapaResumen - Frecuencia de Palabras2Vectores (Arrays dinámicos)
Introducción a std::vectorCreación de un VectorAgregar elementosAcceder a los elementosTamaño del VectorIterar con un bucle ForBucle For basado en rangosEliminar elementosResumen - Operaciones con Vectores5Proyecto: Herramienta de inventario
Configuración del proyectoAgregar y actualizar artículos3Proyecto: Herramienta de lista de tareas
Descripción general del proyectoAñadir una tareaPractica por tu cuenta: Compilador de C++ online