Itération inverse dans les boucles for basées sur une plage avec C 11
En C , la boucle for basée sur la plage fournit un moyen pratique pour parcourir les éléments d’un conteneur. Cependant, il n'existe pas d'adaptateur de conteneur intégré capable d'inverser la direction des itérateurs, ce qui rend difficile l'itération sur un conteneur dans l'ordre inverse.
Concept : adaptateurs de conteneur
Avant d'explorer une solution, il est important de comprendre le concept des adaptateurs de conteneur. Ce sont des objets qui enveloppent un conteneur et fournissent une vue modifiée de ses éléments. Les adaptateurs peuvent filtrer, transformer ou manipuler d'une autre manière les éléments renvoyés par le conteneur sous-jacent.
Solution : l'adaptateur inverse de Boost
Pour inverser la direction des itérateurs et activer l'itération inverse dans les boucles for basées sur la plage, nous pouvons exploiter l'adaptateur boost::adaptors::reverse des bibliothèques Boost C. Cet adaptateur enveloppe un conteneur et renvoie une séquence inversée de ses éléments.
Exemple
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 }; // Iterate in reverse order for (auto i : boost::adaptors::reverse(x)) std::cout << i << '\n'; // Iterate in forward order for (auto i : x) std::cout << i << '\n'; }
Dans cet exemple , l'adaptateur inversé est utilisé pour parcourir la liste x dans l'ordre inverse. Le résultat sera :
19 17 13 11 7 5 3 2
Remarque : L'adaptateur boost::adaptors::reverse fait partie des bibliothèques Boost C, qui sont une collection de bibliothèques open source qui peuvent être téléchargé et intégré dans des projets C existants.
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!