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 :

parcourir un vecteur de pointeur à la recherche du premier null


Sujet :

SL & STL C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    620
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2006
    Messages : 620
    Par défaut parcourir un vecteur de pointeur à la recherche du premier null
    Bonjour,

    Je me demande quelle recette appliquer pour parcourir un vecteur à la recherche d'un pointeur NULL dans un vecteur, pour effacer tout ce qui vien tà partir de là ? Pour le moment, j'essaye quelque chose comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    vector<MyObj*>* myvec = new vector<MyObj*>(10,NULL)
     
    //quelques manips, 10 est une valeur aléatoire, dans cet exemple
     
    myvec->erase( find(myvec->begin(),myvec->end(),NULL) );
    mais g++ râle : il n'a pas l'air de vouloir comparer NULL avec des pointeurs...

    Si quelqu'un à une suggestion... sinon, je déroule la boucle de recherche à la main...

    Merci :-)

    Marc

  2. #2
    Membre éclairé
    Avatar de gb_68
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2006
    Messages
    232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 232
    Par défaut
    Bonjour,
    le problème vient je pense du fait que "0", la valeur de remplacement de NULL, est considéré comme étant un paramètre de type int lors de la déduction du dernier paramètre template du find.

    Si il est possible de comparer/affecter "0" à un pointeur (exception nécessaire), ce n'est pas vrai pour pour un int.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    MyObj* ptr;
    int  zero = 0;
     
    (ptr == 0); // OK
    (ptr == zero); // Erreur
    Ce genre de problème sera résolu par le futur nullptr du C++0x.

    En attendant, il faut forcer le type du paramètre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    MyObj* ptr_null = NULL;
    find(myvec->begin(),myvec->end(),ptr_null);
    // ou
    find(myvec->begin(),myvec->end(), static_cast<MyObj*>(NULL));

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    620
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2006
    Messages : 620
    Par défaut
    Génial, merci beaucoup :-)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Arbre N-aire avec des vecteurs de pointeurs
    Par valderama dans le forum Débuter
    Réponses: 3
    Dernier message: 15/01/2009, 16h42
  2. parcourir un vecteur
    Par vanesa dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 11/04/2008, 20h17
  3. Prob : Suppresion instance d'un vecteur de pointeurs
    Par Julien_C++ dans le forum C++
    Réponses: 5
    Dernier message: 01/04/2007, 20h50
  4. Réponses: 2
    Dernier message: 02/11/2006, 20h21
  5. [Débutant]Vecteur de pointeurs
    Par @r$£~%[ dans le forum C++
    Réponses: 18
    Dernier message: 09/08/2005, 16h19

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