Praktische Anwendungsmuster
Elemente filtern
#include <iostream>
#include <vector>
int main() {
std::vector<int> zahlen = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
// Gerade Zahlen filtern
for (int zahl : zahlen) {
if (zahl % 2 == 0) {
std::cout << zahl << " ";
}
}
return 0;
}
#include <iostream>
#include <vector>
int main() {
std::vector<int> zahlen = {1, 2, 3, 4, 5};
// Jede Zahl quadrieren
for (int& zahl : zahlen) {
zahl = zahl * zahl;
}
// Transformierte Zahlen ausgeben
for (int zahl : zahlen) {
std::cout << zahl << " ";
}
return 0;
}
Arbeiten mit komplexen Datenstrukturen
Geschachtelte Iteration
#include <iostream>
#include <vector>
int main() {
std::vector<std::vector<int>> matrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
// 2D-Vektor iterieren
for (const auto& zeile : matrix) {
for (int zahl : zeile) {
std::cout << zahl << " ";
}
std::cout << std::endl;
}
return 0;
}
Iterationsmuster
graph TD
A[Iterationsmuster] --> B[Einfache lineare Iteration]
A --> C[Geschachtelte Iteration]
A --> D[Bedingte Iteration]
A --> E[Transformation]
Erweiterte Iterationstechniken
Iterieren mit Index
#include <iostream>
#include <vector>
int main() {
std::vector<std::string> früchte = {"apfel", "banane", "kirsche"};
// Mit Index iterieren
for (size_t i = 0; i < früchte.size(); ++i) {
std::cout << "Index " << i << ": " << früchte[i] << std::endl;
}
return 0;
}
Häufige Anwendungsfälle
Anwendungsfall |
Beschreibung |
Beispiel |
Datenverarbeitung |
Transformation oder Filterung von Sammlungen |
Quadrieren von Zahlen |
Konfiguration |
Durchlaufen von Einstellungen |
Lesen von Konfigurationsdaten |
Initialisierung |
Befüllen von Datenstrukturen |
Füllen von Arrays oder Vektoren |
Best Practices
- Verwenden Sie Konstantenreferenzen für schreibgeschützte Iterationen
- Vermeiden Sie die Änderung des Containers während der Iteration
- Wählen Sie die am besten geeignete Iterationsmethode
graph TD
A[Performance] --> B[Nach Wert]
A --> C[Nach Referenz]
A --> D[Konstante Referenz]
B --> E[Overhead beim Kopieren]
C --> F[Direkte Änderung]
D --> G[Effizientest für große Objekte]
Fazit
Bereichsbasierte For-Schleifen bieten leistungsstarke und flexible Iterationsmechanismen. LabEx empfiehlt die Beherrschung dieser Muster, um ausdrucksstärkeren und effizienteren C++-Code zu schreiben.