Menu
Coddy logo textTech

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.

challenge icon

Sfida

Facile

Crea 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 n che rappresenta il numero di studenti
  • Poi n coppie di input:
    • Una stringa che rappresenta il nome dello studente
    • Un intero che rappresenta il punteggio dello studente

Il tuo programma dovrà:

  1. Creare una std::map<std::string, int> denominata grades
  2. Leggere il numero di studenti
  3. Per ogni studente, leggere il nome e il punteggio, quindi aggiungerli alla mappa usando la notazione con parentesi quadre
  4. Dopo aver aggiunto tutti gli studenti, stampare le informazioni di ciascuno nel formato mostrato di seguito
  5. 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;
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore C++ online