Maison >développement back-end >C++ >Comment Boost::adaptors::reverse peut-il activer les boucles For basées sur la plage inversée dans C 11 ?

Comment Boost::adaptors::reverse peut-il activer les boucles For basées sur la plage inversée dans C 11 ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-03 03:02:10933parcourir

How Can Boost::adaptors::reverse Enable Reverse Range-Based For-Loops in C  11?

C 11 Boucle For basée sur une plage inversée utilisant Boost

L'itération dans les conteneurs dans l'ordre inverse peut être réalisée à l'aide d'un adaptateur de conteneur dédié qui inverse la direction des itérateurs. Cela nous permet d'implémenter l'itération inverse avec la commodité des boucles for basées sur la plage.

Heureusement, Boost fournit un tel adaptateur : boost::adaptors::reverse. Cet adaptateur prend un conteneur en entrée et renvoie un nouvel adaptateur de conteneur avec des itérateurs inversés.

Pour démontrer son utilisation, considérons l'exemple suivant :

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

Ce code crée d'abord une liste x de entiers. Ensuite, il parcourt la liste dans l'ordre inverse à l'aide de l'adaptateur boost::adaptors::reverse(x). Il imprime les éléments dans l'ordre inverse, suivi de l'ordre d'origine pour comparaison.

Le résultat du programme est :

19
17
13
11
7
5
3
2
2
3
5
7
11
13
17
19

Cela démontre la capacité des adaptateurs Boost boost :: : :adaptateur inverse pour inverser la direction des itérateurs et permettre une itération inverse pratique avec des boucles for basées sur la plage en C .

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!

Déclaration:
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