0Pricing
C++ Academy · Lezione

Ciclo for basato su intervallo con i contenitori

Iteri facilmente sui contenitori con la sintassi del for basato su intervallo di C++11

Ciclo for basato su intervallo con i contenitori è una lezione C++ Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento C++ Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso C++ Academy include 4 lezioni in totale.

Il ciclo moderno

C++11 ha introdotto il ciclo for basato sull'intervallo: consente di iterare su qualsiasi contenitore senza indici o iteratori espliciti. Il codice è più pulito e meno soggetto a errori.

std::vector<int> v = {1, 2, 3, 4, 5};
for (int x : v) {
    std::cout << x << " ";
}

Per valore

L'esempio precedente copia ogni elemento in x. Va bene per tipi economici come int, ma è costoso per oggetti grandi.

Per riferimento const

Per i tipi non banali, utilizzi const auto& per evitare copie e indicare che non modificherà gli elementi.

std::vector<std::string> names = {"Ada", "Bob"};
for (const auto& name : names) {
    std::cout << name << "\n";
}

Per riferimento, per modificare

Utilizzi un semplice riferimento per modificare gli elementi direttamente nel contenitore.

std::vector<int> v = {1, 2, 3};
for (auto& x : v) {
    x *= 10;
}
// v is now {10, 20, 30}

auto per la deduzione del tipo

Lasci che il compilatore deduca il tipo dell'elemento. Con stringhe, vettori di struct e mappe, questo riduce notevolmente la quantità di codice da digitare.

Iterare su una mappa

Ogni elemento è una std::pair<const Key, Value>. Utilizzi i binding strutturati (C++17) per ottenere un codice più chiaro.

std::map<std::string, int> ages = {{"Ada",30},{"Bob",24}};
for (const auto& [name, age] : ages) {
    std::cout << name << ": " << age << "\n";
}

Iterare sulle stringhe

Una std::string è un contenitore di char.

std::string s = "hello";
for (char c : s) {
    std::cout << c << " ";
}

Cicli su liste di inizializzazione

Può iterare direttamente con un ciclo basato sull'intervallo su una lista racchiusa tra parentesi graffe.

for (int n : {1, 2, 4, 8, 16}) {
    std::cout << n << " ";
}

Ciclo for basato sull'intervallo inverso

Il ciclo for basato sull'intervallo standard procede in avanti. Per iterare all'indietro, utilizzi std::ranges::reverse_view (C++20) o iteratori inversi gestiti manualmente.

#include <ranges>
for (auto x : v | std::views::reverse) {
    std::cout << x;
}

Limitazioni

Il ciclo for basato sull'intervallo non consente di:

  • Conoscere l'indice corrente senza un contatore separato
  • Saltare elementi o modificare il contenitore durante l'iterazione
  • Iterare su due contenitori in parallelo (utilizzi un for normale o zip)

Tipi personalizzati nei range-for

Per rendere una propria classe compatibile con range-for, fornisca membri begin() e end() oppure funzioni libere che restituiscano iteratori.

Verifica rapida

Quale forma del ciclo for basato sull'intervallo modifica gli elementi nel contenitore?

Riepilogo

Il ciclo for basato sull'intervallo è il modo più chiaro per iterare. Utilizzi const auto& per impostazione predefinita, auto& per modificare gli elementi e i binding strutturati per scomporre coppie e tuple.

Domande Frequenti

La lezione «Ciclo for basato su intervallo con i contenitori» è gratuita?

Sì — il testo completo di «Ciclo for basato su intervallo con i contenitori» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso C++ Academy, passa a CoddyKit PRO. Il corso C++ Academy include 4 lezioni in totale.

Cosa imparerò in «Ciclo for basato su intervallo con i contenitori»?

Iteri facilmente sui contenitori con la sintassi del for basato su intervallo di C++11 Eserciti C++ Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare C++ Academy?

Non è richiesta alcuna esperienza precedente. C++ Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Ciclo for basato su intervallo con i contenitori»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione C++ Academy?

Sì. Ogni lezione C++ Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Diramazioni: if-else, ternario, switch-case
  2. Strutture dei cicli: for, while, do-while
  3. Ciclo for basato su intervallo con i contenitori
  4. Restituzioni anticipate, break, continue e goto
← Torna a C++ Academy