Creare una mappa
Fa parte della sezione Logica e flusso del percorso C++ di Coddy. Lezione 24 di 56.
Ora che hai capito cos'è una mappa, impariamo a crearne una e ad aggiungervi coppie chiave-valore. Quando dichiari una std::map, devi specificare sia il tipo della chiave sia il tipo del valore usando le parentesi angolari.
Ecco la sintassi di base per creare una mappa:
std::map<KeyType, ValueType> mapName;Ad esempio, per creare una mappa che memorizza i nomi degli studenti come chiavi e i loro punteggi dei test come valori:
std::map<std::string, int> studentScores;Per aggiungere elementi alla tua mappa, puoi usare la notazione con parentesi quadre con la chiave, quindi assegnare un valore:
studentScores["Alice"] = 95;
studentScores["Bob"] = 87;
studentScores["Carol"] = 92;Questo crea tre coppie chiave-valore nella mappa. Il nome di ogni studente funge da chiave che ti consente di recuperare rapidamente il punteggio corrispondente.
Per scorrere tutti gli elementi di una mappa, puoi usare un ciclo for basato su range con auto. Ogni elemento di una std::map è una coppia chiave-valore; puoi accedere alla chiave usando .first e al valore usando .second:
for (const auto& pair : studentScores) {
std::cout << pair.first << ": " << pair.second << std::endl;
}Qui, auto deduce automaticamente il tipo di ogni elemento (una coppia chiave-valore), pair.first ti fornisce la chiave (il nome dello studente) e pair.second ti fornisce il valore (il punteggio). Nota che std::map mantiene automaticamente i suoi elementi ordinati per chiave, quindi iterare sulla mappa stamperà le voci in ordine alfabetico.
Sfida
FacileCrea un programma che realizzi un sistema per tenere traccia dei voti degli studenti usando una std::map. Il tuo programma memorizzerà i nomi degli studenti come chiavi e i loro punteggi dei test come valori.
Verranno forniti i seguenti input:
- Un intero
nche rappresenta il numero di studenti - Poi
ncoppie di input:- Una stringa che rappresenta il nome dello studente
- Un intero che rappresenta il punteggio dello studente
Il tuo programma dovrà:
- Creare una
std::map<std::string, int>denominatagrades - Leggere il numero di studenti
- Per ogni studente, leggere il nome e il punteggio, quindi aggiungerli alla mappa usando la notazione con parentesi quadre
- Dopo aver aggiunto tutti gli studenti, stampare le informazioni di ciascuno nel formato mostrato di seguito
- Calcolare e stampare il numero totale di studenti memorizzati nella mappa
Usa esattamente il seguente formato di output:
Student Grades:\n[student1]: [score1]\n[student2]: [score2]\n[student3]: [score3]\n...\nTotal students: [number of students]Gli studenti devono essere stampati nell'ordine in cui compaiono iterando sulla mappa (che sarà alfabetico, poiché le mappe ordinano automaticamente per chiave). Usa un ciclo for basato su intervallo per iterare sulla mappa, accedendo a ogni coppia chiave-valore e stampando il nome dello studente seguito dal suo punteggio.
Provalo tu
#include <iostream>
#include <map>
#include <string>
using namespace std;
int main() {
// Leggi il numero di studenti
int n;
cin >> n;
// Crea la mappa per memorizzare i voti
map<string, int> grades;
// TODO: Scrivi il tuo codice qui
// Leggi il nome e il punteggio di ogni studente, poi aggiungili alla mappa
// Stampa i risultati
cout << "Student Grades:" << endl;
// TODO: Usa un ciclo for basato su intervallo per stampare il voto di ogni studente
// Stampa il numero totale di studenti
cout << "Total students: " << grades.size() << endl;
return 0;
}Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Puntatori e memoria
Che cos'è un puntatore?Operatore indirizzoOperatore di dereferenziazionePuntatori nulliPuntatori e arrayMemoria dinamica con 'new'Liberare la memoria con 'delete'Riepilogo - Esercizi sui puntatori4Mappe (coppie chiave-valore)
Introduzione a std::mapCreare una mappaAccedere ai valori e modificarliVerificare la presenza di chiaviRimuovere coppieIterare su una mappaRiepilogo - Frequenza delle parole2Vettori (array dinamici)
Introduzione a std::vectorCreare un vettoreAggiungere elementiAccedere agli elementiDimensione del vettoreIterare con un ciclo forCiclo for basato su intervalloRimuovere elementiRiepilogo - Operazioni sui vettori5Progetto: strumento per l’inventario
Configurazione del progettoAggiunta e aggiornamento degli articoli3Progetto: Strumento per l’elenco delle attività
Panoramica del progettoAggiungere un’attivitàEsercitati da solo: Compilatore C++ online