Range based for (manchmal auch foreach genannt) ist eine bequeme und elegante Erweiterung in Si, mit der Sie leicht über die Elemente eines Containers iterieren können.
Die grundlegende Syntax für range based for lautet wie folgt:
for (typ der Elementvariablen variable : container)
// code, der für jedes Containerelement ausgeführt wird
Mit dieser Erweiterung können Sie mit Containern arbeiten, die entweder die begin() - und end() -Methoden bereitstellen oder die entsprechenden begin() - und end() -Funktionen definieren. Beispiele für solche Container können Arrays, Vektoren, Listen und andere sein.
Range based for bietet einen praktischen Iterator zum Durchlaufen aller Elemente eines Containers, ohne Zeiger und komplexe Indizes verwenden zu müssen. Dadurch wird der Code einfacher und lesbarer und das Risiko von Fehlern bei der Arbeit mit Containern reduziert.
Merkmale und Vorteile von range based for
- Einfache Bedienung: die Syntax von range based for ist sehr einfach und leicht zu lesen. Es ermöglicht Ihnen, die Absicht klar auszudrücken, über die Elemente eines Containers oder Arrays zu iterieren.
- Sicherheit: Im Gegensatz zur Standard-for-Schleife bietet range based for die Sicherheit der Ausführung, indem das Ende eines Containers oder Arrays automatisch ermittelt wird. Dadurch werden Fehler beim Zugriff auf nicht vorhandenen Speicher vermieden oder die Array-Grenze überschritten.
- Flexibilität: Range based for kann verwendet werden, um über alle iterierbaren Objekte zu iterieren, einschließlich Standardcontainern, benutzerdefinierten Containern und sogar einzelnen Array-Elementen.
| Verbesserte Codelesbarkeit | Die range based for-Syntax ist leicht zu lesen und ermöglicht es Ihnen, die Absicht, über die Elemente des Containers zu iterieren, deutlicher auszudrücken. |
| Vereinfachte Iteration | Die range based for-Syntax bestimmt automatisch den Endpunkt der Iteration, wodurch der Code vereinfacht und Fehler vermieden werden können. |
| Erhöhte Sicherheit | Range based for bietet Runtime-Sicherheit, da der Zugriff auf Container- oder Array-Elemente automatisch verwaltet wird. |
| Unterstützung für benutzerdefinierte Container | Mit Range based for können Sie über alle benutzerdefinierten Container iterieren, was die Arbeit mit verschiedenen Datentypen erleichtert. |
Insgesamt ist range based for eine bequemere und sicherere Alternative zur Standard-for-Schleife. Es verbessert die Lesbarkeit und unterstützt die Verwendung verschiedener Datentypen, wodurch der Code flexibler und effizienter wird.
Beispiele für die Verwendung von range based for in C++
for (elementtyp & elementname : Temperaturbereich)
Im Folgenden finden Sie einige Beispiele für die Verwendung von range based for in C++:
1. Beispiel mit dem Container std::vector:
for (int & number : numbers)
2. Beispiel mit dem Container std::map:
for (const auto & pair : scores)
3. Beispiel für ein normales Array:
for (int & number : numbers)
Mit Range based for können Sie auf alle Elemente eines Containers zugreifen, ohne Zeiger oder Iteratoren verwenden zu müssen. Außerdem macht es den Code besser lesbar und vermeidet Fehler bei der Arbeit mit Iteratoren. Verwenden Sie range based for, um das Durchlaufen von Containern in C++ zu vereinfachen!
Arbeiten mit range based for mit Arrays
Wenn Sie mit Arrays mit range based for arbeiten, ist es am besten, einen Verweis auf Array-Elemente oder einen const-Verweis zu verwenden, um zu vermeiden, dass die Array-Elemente kopiert werden. Dies ist besonders nützlich, wenn die Elemente des Arrays Volumenobjekte sind oder wenn Sie ihre Werte ändern möchten.
Beispiel für die Verwendung von range based for mit einem Array:
// Инициализация массиваint arr[] = ;// Использование range based forfor (int& num : arr) for (const int& num : arr)
Range based for bietet eine bequeme und effiziente Möglichkeit, mit Arrays in C++ zu arbeiten. Es ermöglicht Ihnen, sich auf die Logik Ihres Codes zu konzentrieren, ohne über die Details des Iterierens über das Array nachzudenken. Verwenden Sie range based for, um Ihren Code zu vereinfachen und lesbarer zu machen.
Arbeiten mit range based for mit C++ -Containern
In C ++ 11 gibt es eine neue Art, mit Containerelementen zu arbeiten, die als range based for bezeichnet werden. Es ermöglicht uns, über alle Elemente eines Containers zu iterieren, ohne explizit Indizes oder Iteratoren anzugeben.
Range based for besteht aus drei Teilen: das Schlüsselwort for , die Deklaration einer Variablen, die das aktuelle Containerelement speichert, und des Containers selbst, durch den iteriert wird.
Beispiel für die Verwendung von range based for mit einem std::vector Container :
std::vector numbers = ;for (auto number : numbers)
Range based for funktioniert auch mit anderen Containern in C++, z. B. std::array , std::list , std::set und andere.
Beispiel für die Verwendung von range based for mit dem Container std::set :
std::set names = ;for (const auto& name : names)
Range based for ermöglicht es uns, die Container-Elemente bequemer zu durchlaufen und den Code lesbarer und verständlicher zu machen.