Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

Un iterateur dans c++?


Sujet :

C++

  1. #1
    Membre à l'essai
    Un iterateur dans c++?
    Bonjour à tous,

    Je suis débutant dans c++. J'aimerais faire une itération d’un objet comme dans le python.
    Dans mon carnet des enseignements j'ai trouvé :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    #define mit(c,itr) for(__typeof((c).begin()) itr=(c).begin();itr!=(c).end();itr++)


    Malheureusement, je le ne comprends pas et je ne vois pas comment je pourrais l’utiliser. Vous pouvez me donner un exémple ?

    Merci pour votre temps !
    Cordialement,

  2. #2
    Expert éminent
    Tu utilises les itérateurs de la STL.
    La fonction begin récupère l'itérateur du premier élément.
    Et ensuite on passe d'élément en élément juste avec 1 incrémentation (itr++)
    Et la fonction end récupère l'itérateur du dernier élément afin d'arrêter la boucle.

    Regarde la documentation de la fonction begin, lien cplusplus.com en anglais

  3. #3
    Rédacteur/Modérateur

    Ça itère quoi sur un objet en Python ?
    Une itération est sensée se faire sur une collection, pour itérer sur chacun d'eux, pas sur un unique objet.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  4. #4
    Expert confirmé
    Bonjour,

    La macro que tu as trouvée est une vieillerie qui s'écrit désormais en C++:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    for ( auto&& x : c ) {  // pour x parcourant tous les éléments de c
        std::cout << x;     // par exemple: on peut afficher x
    }

    avec ta macro la syntaxe pour l'utiliser serait :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    mit ( c , itr ) {       // itr itère sur tous les éléments de c
        std::cout << *itr; // par exemple: on affiche l'élément itéré (sans oublier l'étoile)
    }
    C'est donc plus lourd à utiliser et ta macro utilise un mot non portable et désormais périmé __typeof().

  5. #5
    Membre à l'essai
    Super!! C'est très claire maintenant.
    Merci à tous!

###raw>template_hook.ano_emploi###