IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

SL & STL C++ Discussion :

Avantages et defauts entre différentes méthodes d'itération sur les conteneurs de la STL


Sujet :

SL & STL C++

  1. #1
    Membre confirmé Avatar de MenshaKaine
    Inscrit en
    Juin 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Juin 2009
    Messages : 68
    Par défaut Avantages et defauts entre différentes méthodes d'itération sur les conteneurs de la STL
    bonjour,

    une question se pose actuellement dans mon entourage.

    si on prend par exemple un std::vector.

    pour parcourir l'ensemble des objets qu'il contient, il existe plusieurs méthodes:
    1- utiliser une boucle for avec des itérateurs obtenus avec begin et end et incémenter l'itérateur avec ++.
    2- utiliser un compteur unsigned int(ou size_type) de l'élément 0 à size-1 du vector et accéder aux éléments par l'opérateur []

    il doit exister d'autres méthodes aussi ... mais mes questions étaient, quels sont les avantages et inconvénients de chacune de ces méthodes ? Vous utilisez quelle méthode ? pourquoi ? trouvez-vous que l'une d'entre elle est inutile ou incompréhensible ?

    merci.

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Bonjour,
    Ce sujet a récemment été abordé ici.

  3. #3
    Membre confirmé Avatar de MenshaKaine
    Inscrit en
    Juin 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Juin 2009
    Messages : 68
    Par défaut
    desolé j'avais pas vu ...
    merci.

  4. #4
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Il a certes été abordé mais uniquement du point de vue performance. Il y a aussi d'autres aspects. En particulier, j'ai envie de dire que si outre le parcours, tu vas de toute manière faire des accès par index dans ton tableau, autant parcourir pas index, et que si tu vas avoir besoin d'un itérateur dans ton parcours (par exemple pour insérer un élément, en ôter un...), autant parcourir par itérateur.

    Si tu n'est pas dans un de ces cas, un parcours par itérateur a des chances d'être plus stable face à un changement du type de conteneur, ou pour modifier l'algorithme pour qu'il ne parcoure qu'une sous partie d'un tableau.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  5. #5
    Membre confirmé Avatar de MenshaKaine
    Inscrit en
    Juin 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Juin 2009
    Messages : 68
    Par défaut
    Merci pour ta réponse pertinente.

    je comprend bien la première partie de ton discours. qui me parait fort logique dans le cadre d'une utilisation normal de la STL.

    Par contre concernant, cette partie:
    Si tu n'est pas dans un de ces cas, un parcours par itérateur a des chances d'être plus stable face à un changement du type de conteneur, ou pour modifier l'algorithme pour qu'il ne parcoure qu'une sous partie d'un tableau.
    elle me semble plus obscure. As-tu des petits exemples comme indication.

    Merci.

  6. #6
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Salut,
    Un exemple : tu es parti sur un parcours d'indice parce que tu utilises un vecteur. Au bout d'un moment, tu te rends compte que le vecteur n'est pas le conteneur approprié. Donc, tu changes en list. Et là tu dois réécrire tes fonctions car les listes n'ont pas de surcharge de [].
    En fait, l'itérateur te donne un 'concept' de (début,fin) sans que tu n'aies à te soucier du conteneur sous jacent, et avec début/fin peut être plus réduit que l'ensemble du conteneur (si par exemple tu veux filtrer des éléments).
    D'où l'idée d'une meilleur 'stabilité' aux changements inévitables.

  7. #7
    Membre confirmé Avatar de MenshaKaine
    Inscrit en
    Juin 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Juin 2009
    Messages : 68
    Par défaut
    merci pour ton petit exemple.
    il me confirme bien ce que je pensais.

  8. #8
    Membre chevronné Avatar de Lavock
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 560
    Par défaut
    Cela rejoint d'ailleurs ma remarque sur l'autre post. Les incovéniants de std::list et des autre conteneurs non contigu serait catastrophique si tu as mis en place du calcul vectoriel (sse ou même opencl). D'où l'intérêt de cette notation le cas échéant.

Discussions similaires

  1. Réponses: 10
    Dernier message: 04/03/2008, 15h13
  2. [Batch] itération sur les fichiers d'un dossier
    Par yelbied dans le forum Windows
    Réponses: 3
    Dernier message: 12/07/2007, 16h09
  3. itération sur les champs
    Par shnouf dans le forum Langage
    Réponses: 2
    Dernier message: 28/11/2006, 15h27
  4. Réponses: 8
    Dernier message: 28/01/2006, 16h53
  5. Simulation de transmission de paquet entre différent réseaux
    Par MelloW dans le forum Développement
    Réponses: 2
    Dernier message: 12/07/2002, 19h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo