Iterare su una mappa
Fa parte della sezione Logica e flusso del percorso C++ di Coddy. Lezione 28 di 56.
Ora che sai come creare, modificare e rimuovere elementi da una mappa, impariamo come scorrere tutte le coppie chiave-valore della tua mappa. Il ciclo for basato su intervalli offre un modo elegante per iterare su ogni elemento di una std::map.
Ecco la sintassi di base per iterare su una mappa:
for (auto pair : myMap) {
// Accedi alla chiave con pair.first
// Accedi al valore con pair.second
}Ogni elemento nel ciclo è un oggetto coppia che contiene due membri importanti: first contiene la chiave e second contiene il valore. Ecco un esempio pratico:
std::map<std::string, int> scores;
scores["Alice"] = 95;
scores["Bob"] = 87;
scores["Carol"] = 92;
for (auto pair : scores) {
std::cout << pair.first << ": " << pair.second << std::endl;
}Questo stamperà il nome di ogni studente seguito dal suo punteggio. La parola chiave auto determina automaticamente il tipo corretto per ogni coppia, rendendo il tuo codice più pulito e facile da leggere.
Sfida
FacileCrea un programma che gestisca il sistema del menu di un ristorante usando std::map. Il programma memorizzerà le voci del menu e i relativi prezzi, quindi mostrerà il menu completo iterando su tutte le coppie chiave-valore.
Verranno forniti i seguenti input:
- Un intero
nche rappresenta il numero di voci del menu - Poi
ncoppie di input:- Una stringa che rappresenta il nome del piatto
- Un double che rappresenta il prezzo del piatto
Il programma dovrebbe:
- Creare una
std::map<std::string, double>chiamatamenu - Leggere il numero di voci del menu
- Per ogni voce del menu, leggere il nome del piatto e il prezzo, poi aggiungerli alla mappa usando la notazione con parentesi quadre
- Usare un ciclo for basato su intervallo per iterare sull'intera mappa e stampare ogni piatto con il relativo prezzo
- Calcolare e stampare il numero totale di voci nel menu
Usa il seguente formato di output esatto:
Restaurant Menu:
[dish1]: $[price1]
[dish2]: $[price2]
[dish3]: $[price3]
...
Total menu items: [number of items]Le voci del menu devono essere stampate nell'ordine in cui compaiono durante l'iterazione sulla mappa (ordine alfabetico per nome del piatto). Usa un ciclo for basato su intervallo con auto pair : menu per iterare sulla mappa, accedendo a ciascuna coppia chiave-valore con pair.first per il nome del piatto e pair.second per il prezzo. Stampa ogni prezzo con esattamente 2 cifre decimali usando std::fixed e std::setprecision(2).
Provalo tu
#include <iostream>
#include <map>
#include <string>
#include <iomanip>
using namespace std;
int main() {
// Leggi il numero di voci del menu
int n;
cin >> n;
// Crea la mappa menu
map<string, double> menu;
// Leggi le voci del menu e i prezzi
for (int i = 0; i < n; i++) {
string dish;
double price;
cin >> dish >> price;
// TODO: Aggiungi dish e price alla mappa menu
}
// TODO: Stampa l'intestazione "Restaurant Menu:"
// TODO: Usa un ciclo for basato su intervallo per scorrere menu e stampare ogni elemento
// Formato: [dish]: $[price] con 2 cifre decimali
// TODO: Stampa il numero totale di voci del menu
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