Maison > développement back-end > C++ > Comment puis-je inverser l'itération dans un conteneur à l'aide des boucles for basées sur la plage de C 11 ?

Comment puis-je inverser l'itération dans un conteneur à l'aide des boucles for basées sur la plage de C 11 ?

Patricia Arquette
Libérer: 2024-12-14 13:34:12
original
355 Les gens l'ont consulté

How Can I Reverse Iterate Through a Container Using C  11's Range-Based for-Loops?

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

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

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!

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