Heim > Backend-Entwicklung > C++ > Wie kann ich die Iteration durch einen Container mit C 11-bereichsbasierten For-Schleifen einfach umkehren?

Wie kann ich die Iteration durch einen Container mit C 11-bereichsbasierten For-Schleifen einfach umkehren?

DDD
Freigeben: 2024-12-02 15:58:10
Original
987 Leute haben es durchsucht

How Can I Easily Reverse Iterate Through a Container Using C  11 Range-Based For-Loops?

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 };
Nach dem Login kopieren

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';
Nach dem Login kopieren

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';
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage