Moderne Iterationsmethoden
Erweiterte Iterationstechniken in C++
Moderne C++-Versionen bieten ausgereifte Iterationsmethoden, die die Lesbarkeit und Effizienz des Codes verbessern.
Algorithmusbasierte Iteration
std::for_each
#include <algorithm>
#include <vector>
std::vector<int> numbers = {1, 2, 3, 4, 5};
std::for_each(numbers.begin(), numbers.end(), [](int& num) {
num *= 2; // Jedes Element verdoppeln
});
Lambda-Ausdrücke bei der Iteration
auto printElement = [](const int& element) {
std::cout << element << " ";
};
std::vector<int> data = {10, 20, 30, 40, 50};
std::for_each(data.begin(), data.end(), printElement);
Iterator-Kategorien
Iterator-Typ |
Beschreibung |
Fähigkeiten |
Input-Iterator |
Nur Lesen, vorwärts gerichtet |
Grundlegende Durchquerung |
Output-Iterator |
Nur Schreiben, vorwärts gerichtet |
Modifikation |
Forward-Iterator |
Lesen und Schreiben, vorwärts gerichtet |
Bidirektionaler Zugriff |
Bidirektionaler Iterator |
Lesen und Schreiben, vorwärts/rückwärts |
Komplexe Container |
Random-Access-Iterator |
Vollständiger Zufallszugriff |
Vektor, Array |
Intelligente Iterationsmuster
Auto-Schlüsselwort
std::map<std::string, int> scores = {
{"Alice", 95},
{"Bob", 87}
};
for (const auto& [name, score] : scores) {
std::cout << name << ": " << score << std::endl;
}
Steuerung des Iterationsablaufs
graph TD
A[Start Iteration] --> B{Bedingung erfüllt?}
B -->|Ja| C[Element verarbeiten]
C --> D[Fortfahren/Beenden]
D --> B
B -->|Nein| E[Iteration beendet]
Ansätze der funktionalen Programmierung
std::vector<int> original = {1, 2, 3, 4, 5};
std::vector<int> squared(original.size());
std::transform(
original.begin(),
original.end(),
squared.begin(),
[](int x) { return x * x; }
);
Wichtige Erkenntnisse
- Moderne C++-Versionen bieten leistungsstarke Iterationstechniken.
- Lambda-Ausdrücke ermöglichen flexible Datenverarbeitung.
- Algorithmusbibliotheken bieten effiziente Iterationsmethoden.
LabEx empfiehlt die Erkundung dieser modernen Iterationstechniken, um ausdrucksstärkeren und effizienteren C++-Code zu schreiben.