Share via


Istruzione for basata su intervallo (C++)

Esegue statement ripetutamente e in sequenza per ogni elemento in expression.

for ( for-range-declaration : expression )
   statement 

Note

Utilizzare il istruzione basato su intervallo di for per costruire i cicli che devono eseguire tramite un "intervallo", definito come qualcosa che sia possibile ripetere attraverso-, ad esempio std::vector, o qualsiasi altra sequenza STL dell'intervallo è definito da begin() e da end().Il nome dichiarato nella parte di for-range-declaration è locale all'istruzione di for e non può essere dichiarato nuovamente in expression o in statement.Si noti che la parola chiave di auto è preferibile nella parte di for-range-declaration l'istruzione.

Questo codice consente di utilizzare di base cicli di for da scorrere una matrice e un vettore:

// range-based-for.cpp
// compile by using: cl /EHsc /nologo /W4
#include <iostream>
#include <vector>
using namespace std;

int main() 
{
    // Basic 10-element integer array.
    int x[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

    // Range-based for loop to iterate through the array.
    for( int y : x ) { // Access by value using a copy declared as a specific type. 
                       // Not preferred.
        cout << y << " ";
    }
    cout << endl;

    // The auto keyword causes type inference to be used. Preferred.

    for( auto y : x ) { // Copy of 'x', almost always undesirable
        cout << y << " ";
    }
    cout << endl;

    for( auto &y : x ) { // Type inference by reference.
        // Observes and/or modifies in-place. Preferred when modify is needed.
        cout << y << " ";
    }
    cout << endl;

    for( const auto &y : x ) { // Type inference by reference.
        // Observes in-place. Preferred when no modify is needed.
        cout << y << " ";
    }
    cout << endl;
    cout << "end of integer array test" << endl;
    cout << endl;

    // Create a vector object that contains 10 elements.
    vector<double> v;
    for (int i = 0; i < 10; ++i) {
        v.push_back(i + 0.14159);
    }

    // Range-based for loop to iterate through the vector, observing in-place.
    for( const auto &j : v ) {
        cout << j << " ";
    }
    cout << endl;
    cout << "end of vector test" << endl;
}

Di seguito è riportato l'output:

1 2 3 4 5 6 7 8 9 10

1 2 3 4 5 6 7 8 9 10

1 2 3 4 5 6 7 8 9 10

1 2 3 4 5 6 7 8 9 10

end of integer array test


0.14159 1.14159 2.14159 3.14159 4.14159 5.14159 6.14159 7.14159 8.14159 9.14159

end of vector test

In un ciclo basato su intervallo di for termina quando uno di questi in statement viene eseguito: interruzione, ritorno, o di avanzamento in un'istruzione contrassegnato fuori del ciclo basato su intervallo for.Un'istruzione di continuare in un ciclo basato su intervallo di for termina solo l'iterazione corrente.

Tenere presente i fatti su in forbasato su intervallo:

  • Riconosce automaticamente le matrici.

  • Riconosce i contenitori che hanno .begin() e .end().

  • La ricerca dipendente begin() e end() per qualsiasi altro elemento.

Vedere anche

Riferimenti

parola chiave auto (deduzione del tipo)

Istruzioni di iterazione (C++)

Parole chiave C++

istruzione while (C++)

Istruzione do-while (C++)

per l'istruzione (C++)