Maison > développement back-end > C++ > Les boucles For basées sur une plage C 11 peuvent-elles itérer en sens inverse ?

Les boucles For basées sur une plage C 11 peuvent-elles itérer en sens inverse ?

DDD
Libérer: 2024-12-12 22:02:17
original
547 Les gens l'ont consulté

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

Itération inversée basée sur la plage avec C 11

Question :

Y a-t-il un moyen inverser la direction des itérateurs pour une boucle for basée sur la plage ? Actuellement, transformer une boucle for standard avec des itérateurs explicites à l'aide de rbegin() et rend() est possible, mais il serait avantageux d'avoir une syntaxe analogue pour la version basée sur la plage.

Réponse :

Plutôt que de créer un adaptateur personnalisé, Boost propose une solution pratique avec boost::adaptors::reverse. Cet adaptateur inverse l'ordre des éléments lors de l'itération.

Exemple d'utilisation :

#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';
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal