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

C++ Discussion :

iterator de list i+=2


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Ao�t 2004
    Messages
    63
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 63
    Par d�faut iterator de list i+=2
    Hello.

    list<int>::iterator i = hi.begin();
    i+=2;
    hi.erase(i);

    Pourquoi je ne peux pas faire "i+=2;" ? Si je fait "i++; i++;" �a focntionne mais ce n'est pas tr�s pratique...
    N'y a t-il pas moyen de faire plus simple pour supprimer un �lement d'une list ?

    Merci d'avance.

  2. #2
    R�dacteur
    Avatar de Laurent Gomila
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par d�faut
    Tu ne peux utiliser l'op�rateur += que sur les random access iterator (ceux des vector par exemple). Pour les listes, tu ne pourras te balader que s�quentiellement, donc avec ++ et --.

    Tout ce que tu pourras faire c'est cacher les N appels � l'op�rateur ++ avec la fonction std::advance :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    list<int>::iterator i = hi.begin();
    std::advance(i, 2);
    hi.erase(i);

  3. #3
    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 : 51
    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
    Une des options de conception de la STL est de dire que si une op�ration est possible de mani�re efficace avec un conteneur, on la fournit directement, sinon, si elle est possible mais pas de mani�re efficace, elle est plus ou moins "cach�e", accessible indirectement par un algorithme.

    Une alternative aurait �t� d'essayer d'homog�n�iser les interfaces, et dans ce cas, on aurait pu faire += sur tous les types d'it�rateurs.

    L'option choisie permet de servir de pense-b�te au d�veloppeur, qui aura alors naturellement une incitation � �crire du code qui n'est pas une ab�ration en terme d'acc�s au donn�e, sauf s'il le veut vraiment.
    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.

Discussions similaires

  1. Iterator over lists comprehensions ?
    Par �om dans le forum G�n�ral Python
    R�ponses: 3
    Dernier message: 27/09/2011, 23h47
  2. iterator via list<Object[]>
    Par Bigoodheart dans le forum Struts 2
    R�ponses: 2
    Dernier message: 26/11/2010, 17h56
  3. [list::iterator] une liste d'iterator
    Par kase74 dans le forum D�buter
    R�ponses: 17
    Dernier message: 03/02/2009, 11h57
  4. Iterator imbriqu�s List<List<String>>
    Par blbird dans le forum Struts 2
    R�ponses: 1
    Dernier message: 21/01/2009, 11h05
  5. Iterator sur list et fonction const
    Par Pierre.M dans le forum SL & STL
    R�ponses: 2
    Dernier message: 16/04/2008, 20h50

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