Partager via


Basé sur une plage, instruction (C++)

Exécute statement à plusieurs reprises et séquentiellement pour chaque élément de expression.

for ( for-range-declaration : expression )
   statement 

Notes

Utilisez l'instruction basée sur une plage d' for pour construire des boucles qui doivent s'exécuter dans un « plage », qui est défini en tant que tout ce que vous pouvez itérer à travers- pour l'exemple, std::vector, ou une autre séquence STL dont la plage est défini par begin() et end().Le nom déclaré dans la partie d' for-range-declaration est local à l'instruction d' for et ne peut pas être de nouveau déclaré dans expression ou statement.Notez que le mot clé d' auto est préférable dans la partie d' for-range-declaration de l'instruction.

Ce code montre comment utiliser les boucles étendues d' for pour itérer au sein d'un tableau et un vecteur :

// 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;
}

Voici la sortie :

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

Une boucle basée sur une plage d' for se termine lorsque l'un d'eux dans statement est exécuté : break, retour, ou goto à une instruction étiquetée hors de la boucle basée sur une plage de for .Une instruction d' continuez dans une boucle basée sur une plage d' for termine uniquement l'itération actuelle.

Gardez à l'esprit les faits sur forbasé sur une plage :

  • Identifie automatiquement des tableaux.

  • Identifie les conteneurs qui ont .begin() et .end().

  • Recherche begin() et end() qui dépend de runtime utilise pour tout autre élément.

Voir aussi

Référence

mot clé automatique (type déduction)

Instructions d'itération (C++)

Mots clés C++

while instruction (C++)

do-while, instruction (C++)

pour l'instruction (C++)