Heim > Backend-Entwicklung > C++ > Wie kann ich mit Boost.Range eine bereichsbasierte For-Schleife in C umkehren?

Wie kann ich mit Boost.Range eine bereichsbasierte For-Schleife in C umkehren?

Mary-Kate Olsen
Freigeben: 2024-12-08 18:11:15
Original
722 Leute haben es durchsucht

How Can I Reverse a Range-Based For-Loop in C   Using Boost.Range?

Umgekehrte bereichsbasierte For-Schleifen in C 11 mit Boost.Range

In C ist die bereichsbasierte For-Schleife eine leistungsstarkes Tool zum Durchlaufen von Containern. Standardmäßig wird jedoch vom Anfang des Containers bis zum Ende iteriert. Gibt es eine Möglichkeit, diese Richtung umzukehren?

Umgekehrte Iteratoren mit der bereichsbasierten For-Schleife

Eine Möglichkeit, umgekehrt über einen Container zu iterieren, ist die Verwendung von Mitgliedsfunktionen rbegin() und rend(). Dies erfordert jedoch die Verwendung expliziter Iteratoren und kann für komplexe Szenarien unhandlich werden:

for (auto i = c.rbegin(); i != c.rend(); ++i) { ... }
Nach dem Login kopieren

Boost.Range's Reverse Adapter

Glücklicherweise bietet Boost.Range einen elegante Lösung mit dem boost::adaptors::reverse Adapter. Dieser Adapter umhüllt einen Container und kehrt die Richtung seiner Iteratoren um. Dies ermöglicht eine nahtlose Integration mit bereichsbasierten For-Schleifen:

for (auto& i : boost::adaptors::reverse(c)) { ... }
Nach dem Login kopieren

Verwendungsbeispiel

Hier ist ein Beispiel für die Verwendung von boost::adaptors::reverse zum Iterieren über eine Liste in umgekehrter Reihenfolge:

#include <list>
#include <iostream>
#include <boost/range/adaptor/reversed.hpp>

int main() {
    std::list<int> x{2, 3, 5, 7, 11, 13, 17, 19};
    for (auto i : boost::adaptors::reverse(x)) {
        std::cout << i << '\n';
    }
    for (auto i : x) {
        std::cout << i << '\n';
    }
    return 0;
}
Nach dem Login kopieren

Ausgabe:

19
17
13
11
7
5
3
2
2
3
5
7
11
13
17
19
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich mit Boost.Range eine bereichsbasierte For-Schleife in C 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage