Heim >Backend-Entwicklung >C++ >Wie kann ich die Iteration durch einen Container mit C 11-bereichsbasierten For-Schleifen einfach umkehren?
C 11 Bereichsbasierte For-Schleifen umkehren
Das Durchlaufen eines Containers in umgekehrter Reihenfolge mit einer bereichsbasierten For-Schleife erfordert die Umkehrung Richtung von Iteratoren. Während explizite Iteratoren eine unkomplizierte Lösung bieten, gibt es einen praktischen Container-Adapter, der diese Funktionalität bietet?
Reverse-Iterator-Adapter
Glücklicherweise enthält die Boost-Bibliothek eine Lösung: Boost ::Adapter::umgekehrt. Dieser Adapter kehrt die Iterationsreihenfolge eines Containers um und ermöglicht so die umgekehrte Iteration bereichsbasierter For-Schleifen.
Beispielverwendung
Betrachten Sie einen Container mit ganzen Zahlen:
std::list<int> x { 2, 3, 5, 7, 11, 13, 17, 19 };
Um diesen Container in umgekehrter Reihenfolge mit einer bereichsbasierten for-Schleife zu durchlaufen, verwenden Sie die Umkehrung Adapter:
for (auto i : boost::adaptors::reverse(x)) std::cout << i << '\n';
Dadurch werden die Elemente der Liste in umgekehrter Reihenfolge gedruckt.
Vergleich mit der Originaliteration
Zum Vergleich hier die ursprüngliche Iterationsreihenfolge ohne den umgekehrten Adapter:
for (auto i : x) std::cout << i << '\n';
Dadurch werden die Elemente der Liste im Original gedruckt Reihenfolge.
Fazit
Der Reverse-Adapter von Boost bietet eine bequeme Möglichkeit, mithilfe bereichsbasierter For-Schleifen über einen Container in umgekehrter Reihenfolge zu iterieren. Dies vereinfacht den Code und ermöglicht eine präzisere und effizientere umgekehrte Iteration.
Das obige ist der detaillierte Inhalt vonWie kann ich die Iteration durch einen Container mit C 11-bereichsbasierten For-Schleifen einfach umkehren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!