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
Libérer: 2024-12-03 03:02:10
original
940 Les gens l'ont consulté

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

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
Copier après la connexion

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!

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal