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 :

conversion reverse_iterator vers iterator


Sujet :

SL & STL C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Algérie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 90
    Par défaut conversion reverse_iterator vers iterator
    Bonjour,

    Je n'arrive pas a convertir un reverse_iterator vers un iterator. J'ai essayé (++rev).base(), mais ca n'a pas l'air de fonctionner quand ++rev donne rend().

    Help me please!!!

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Salut,

    Pourquoi ++ ?
    Juste rev.base() devrait fonctionner normalement.

    MAT.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Algérie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 90
    Par défaut
    Non en faite ca fonctionne bien. Mon problème est ailleur (mais je n'arrive pas a trouver le bug, pourtant c'est juste quelque lignes...).
    Le ++ c'est parceque de base, rev_ite.base() retourne l'iterateur juste après(dans le sens initial, celui d'un iterateur normale) rev_ite.

    Cela convient pour l'insertion (ou t'as besoin de l'itérateur juste apres la position où tu veux insérer) mais pas pour la suppression/modification où là t'as besoin de cette astuce.

  4. #4
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    1 110
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Par défaut
    Je remonte cette discussion.
    Contrairement à ce que dit disturbedID je constate que reverse_iterator==iterator (je veux dire le pointeur implicite qui se trouve derrière). C'est lors du déréférencement d'un reverse_iterator que un "-1" est effectué sur le pointeur implicite.
    Ainsi:
    rbegin()==end()
    begin()==rend()
    *rbegin()==*(end()-1)
    *rend()==*(begin()-1) soit un crash probable

  5. #5
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Ben c'est normal.
    rbegin est censé être un itérateur vers le premier élément en partant de la fin, c'est-à-dire le dernier élément.
    rend est censé être un itérateur au-delà de la fin, et le déréférencer est un comportement indéfini.

  6. #6
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    1 110
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    reverse_iterator rit=vector.rbegin();
    iterator it=rit.base();
    valueref=*it;//crash !
    Il semble que l'usage de reverse_iterator::base() soit délicat.

Discussions similaires

  1. Conversion Unix vers DOS...
    Par nicosfly dans le forum Langage
    Réponses: 4
    Dernier message: 23/06/2008, 17h53
  2. [VBA-E] macro conversion excel vers csv
    Par baboune dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 15/07/2004, 09h23
  3. conversion Access vers SQL
    Par Bjuice2 dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 23/03/2004, 13h57
  4. [langage] conversion décimal vers hexa
    Par chipster dans le forum Langage
    Réponses: 2
    Dernier message: 23/02/2004, 16h05
  5. Conversion Timestamp vers varchar
    Par stejutt dans le forum SQL
    Réponses: 4
    Dernier message: 08/01/2004, 08h46

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