Heim >Backend-Entwicklung >C++ >Können bereichsbasierte C 11-For-Schleifen in umgekehrter Reihenfolge iterieren?

Können bereichsbasierte C 11-For-Schleifen in umgekehrter Reihenfolge iterieren?

DDD
DDDOriginal
2024-12-12 22:02:17553Durchsuche

Can C  11 Range-Based For Loops Iterate in Reverse?

Umgekehrte bereichsbasierte Iteration mit C 11

Frage:

Gibt es einen Weg die Richtung von Iteratoren für eine bereichsbasierte for-Schleife umkehren? Derzeit ist die Transformation einer Standard-For-Schleife mit expliziten Iteratoren mithilfe von rbegin() und rend() möglich, es wäre jedoch vorteilhaft, eine analoge Syntax für die bereichsbasierte Version zu haben.

Antwort:

Anstatt einen benutzerdefinierten Adapter zu erstellen, bietet Boost mit boost::adaptors::reverse eine praktische Lösung. Dieser Adapter kehrt die Reihenfolge der Elemente während der Iteration um.

Verwendungsbeispiel:

#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';
}

Das obige ist der detaillierte Inhalt vonKönnen bereichsbasierte C 11-For-Schleifen in umgekehrter Reihenfolge iterieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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