logo

Bereichsbasierte for-Schleife in C++

In diesem Thema besprechen wir die bereichsbasierte for-Schleife in der Programmiersprache C++. Die C++-Sprache führte in C++11 und späteren Versionen ein neues Konzept der bereichsbasierten for-Schleife ein, das viel besser ist als die reguläre For-Schleife. Eine bereichsbasierte for-Schleife erfordert keinen großen Programmieraufwand für die Implementierung der for-Schleifeniteration. Es handelt sich um einen sequentiellen Iterator, der jedes Element des Containers über einen Bereich (vom Anfang bis zum Ende) iteriert.

Bereichsbasierte for-Schleife in C++

Syntax

 for (range_declaration : range_expression ) loop statement 
    Bereichsdeklaration:Es wird verwendet, um eine Variable zu deklarieren, deren Typ mit den Typen der gesammelten Elemente übereinstimmt, die durch den Bereichsausdruck oder einen Verweis auf diesen Typ dargestellt werden.Bereichsausdruck:Es definiert einen Ausdruck, der die geeignete Folge von Elementen darstellt.Schleifenanweisung:Es definiert den Hauptteil der bereichsbasierten for-Schleife, die eine oder mehrere Anweisungen enthält, die bis zum Ende des Bereichsausdrucks wiederholt ausgeführt werden sollen.

Hinweis: Wenn wir den Datentyp der Containerelemente nicht kennen, können wir das Schlüsselwort auto verwenden, das den Datentyp des Bereichsausdrucks automatisch identifiziert.

Programm zum Drucken jedes Elements des Arrays mithilfe einer Range-basierten for-Schleife

Betrachten wir ein Beispiel zum Drucken des int- und double-Arrays mithilfe der bereichsbasierten for-Schleife in C++.

program.cpp

 #include using namespace std; int main () { int arr1 [5] = { 10, 20, 30, 40, 50}; double darr [5] = { 2.4, 4.5, 1.5, 3.5, 4.0 }; // use range based for loop for ( const auto &var : arr1 ) { cout << var << ' ' ; } // use auto keyword to automatically specify the data type of darr container. for ( const auto &var : darr ) { cout << var << ' ' ; } return 0; } 

Ausgabe

 10 20 30 40 50 2.4 4.5 1.5 3.5 4.0 

Programm zur Demonstration des Vektors im Bereich basierend auf einer for-Schleife

Schreiben wir ein einfaches Programm, um den Vektor in einer Range-basierten for-Schleife zu implementieren.

Programm2.cpp

 #include #include using namespace std; int main() { int x; // declare integer variable // declare vector variable vector vect = {5, 10 , 25, 20, 25}; // display vector elements for ( int x : vect) { cout << x << ' '; } return 0; } 

Ausgabe

 5 10 25 20 25 

Programm zum Drucken der Arrays mithilfe einer Range-basierten for-Schleife in C++ mit Referenz

Betrachten wir ein Beispiel zum Drucken der Array-Elemente mithilfe einer bereichsbasierten for-Schleife in C++.

Program3.cpp

 #include #include #include using namespace std; int main(){ array data = {1, 3, -2, 4, 6, 7, 9}; cout << ' Before updating the elements: ' << endl; for (int x : data){ cout << x << ' '; } // pass the references for (int &itemRef : data){ itemRef *= 3; } cout << endl << ' After modification of the elements: ' << endl; for (int x : data){ cout << x << ' '; } cout << endl; return 0; } 

Ausgabe

 Before updating the elements: 1 3 -2 4 6 7 9 After modification of the elements: 3 9 -6 12 18 21 27 

Verschachtelte bereichsbasierte for-Schleife

Wenn eine Schleife innerhalb des Körpers einer anderen Schleife definiert wird, wird die Schleife als verschachtelte for-Schleife bezeichnet. Wenn wir einen Bereich in einer Schleife innerhalb einer anderen bereichsbasierten Schleife definieren, wird die Technik ebenfalls als verschachtelte bereichsbasierte for-Schleife bezeichnet.

Syntax:

 for ( int x : range_expression) // outer loop { for ( int y : range_expression) // inner loop { // statement to be executed } // statement to be executed } 

In der obigen Syntax definieren wir eine bereichsbasierte for-Schleife innerhalb einer anderen Schleife. Hier rufen wir in C++ eine innere und äußere bereichsbasierte for-Schleife auf.

Programm zum Drucken der verschachtelten bereichsbasierten for-Schleife in C++

Betrachten Sie ein Beispiel, um die verschachtelte bereichsbasierte for-Schleife in der Programmiersprache C++ zu demonstrieren.

Range.cpp

 #include using namespace std; int main () { int arr1[4] = { 0, 1, 2, 3 }; int arr2[5] = { 1, 2, 3, 4, 5 }; // use nested range based for loop for ( int x : arr1 ) { // declare nested loop for ( int y : arr2 ) { cout << ' x = ' << x << ' and j = ' << y << endl; } } return 0; } 

Ausgabe

 x = 0 and j = 1 x = 0 and j = 2 x = 0 and j = 3 x = 0 and j = 4 x = 0 and j = 5 x = 1 and j = 1 x = 1 and j = 2 x = 1 and j = 3 x = 1 and j = 4 x = 1 and j = 5 x = 2 and j = 1 x = 2 and j = 2 x = 2 and j = 3 x = 2 and j = 4 x = 2 and j = 5 x = 3 and j = 1 x = 3 and j = 2 x = 3 and j = 3 x = 3 and j = 4 x = 3 and j = 5 

Was ist der Unterschied zwischen einer herkömmlichen for-Schleife und einer bereichsbasierten for-Schleife?

A traditionelle for-Schleife wird verwendet, um den Codeblock wiederholt auszuführen, bis die angegebene Bedingung wahr ist. Eine herkömmliche for-Schleife verfügt über drei Parameter: Initialisierung der Variablen, Angabe der Bedingung und der letzte Parameter ist ein Zähler, der um eins erhöht wird, wenn die Bedingung wahr bleibt.

Syntax:

 for ( variable_initialization; specify_condition; updated_counter) { // statement to be executed; } 

Bereichsbasierte Schleife

Andererseits steht in C++ 11 und späteren Versionen eine neue bereichsbasierte for-Schleife zur Verfügung. Es verfügt über zwei Parameter: die Bereichsdeklaration und den Bereichsausdruck. Es wird auch verwendet, um den Codeblock über einen Bereich hinweg wiederholt auszuführen.

Syntax

 for ( range_declaration : range_ expression ) { loop _statement; // statement to be executed; } 

Die „range_declaration“ wird verwendet, um den Typ der Variablen zu deklarieren, die sich auf den „range_expression“ (Container) bezieht. Der Bereichsausdruck: Es ist wie ein Container, der nacheinander dieselben Elementtypen enthält. Das loop_statement definiert die Anweisung, die in der for-Schleife ausgeführt wird.

kein Eingangssignal

Vorteile der bereichsbasierten for-Schleife

  1. Es ist einfach zu bedienen und auch die Syntax ist einfach.
  2. Eine bereichsbasierte for-Schleife erfordert nicht die Berechnung der Anzahl der Elemente in einem Container
  3. Es erkennt die Anfangs- und Endelemente der Container.
  4. Wir können die Größe und Elemente des Containers problemlos ändern.
  5. Es wird keine Kopie der Elemente erstellt.
  6. Sie ist viel schneller als die herkömmliche for-Schleife.
  7. Normalerweise wird das Schlüsselwort auto verwendet, um den Datentyp der Containerelemente zu erkennen.

Nachteil der bereichsbasierten for-Schleife

  1. Es kann keinen Teil einer Liste durchlaufen.
  2. Es kann nicht zum Durchlaufen in umgekehrter Reihenfolge verwendet werden
  3. Es kann nicht in Zeigern verwendet werden.
  4. Eine Indizierung der aktuellen Elemente ist nicht möglich.