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 :

pb de vector (encore un)


Sujet :

SL & STL C++

  1. #21
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 167
    Par défaut
    Justement, je suis en train de réexaminer cette question parce qu'il arrive que je manipule this (enfin son contenu) et qu'à la fois il soit dans le vecteur modifié et modifiable... réponse à ça dans un Edit

    EDIT : parcours du vecteur et si this vérifie une certaine propriété avec un objet du vecteur... fusion d'une copie de this avec l'objet du vecteur.
    Donc le vecteur en soit n'est pas modifié mais son contenu oui!

  2. #22
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par DEVfan Voir le message
    Justement, je suis en train de réexaminer cette question parce qu'il arrive que je manipule this (enfin son contenu) et qu'à la fois il soit dans le vecteur modifié et modifiable... réponse à ça dans un Edit
    En faite c'etait pour te dire que ressouder devrait du coup retourner un iterateur valid comme insert ou erase
    http://www.cplusplus.com/reference/s...tor/erase.html
    Mais ça aurai été plus simple en voyant ta fonction

  3. #23
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 167
    Par défaut
    Merci pour le lien, je le perds toujours celui-là!

    ça me rassure pour l'appel automatique du destructeur :
    This effectively reduces the vector size by the number of elements removed, calling each element's destructor before.
    Et si ça le fait pour erase, ça doit bien le faire pour toute destruction!!!

    Bon par contre, ça change rien au pb. Dans quel cas le vecteur peut-il mettre tous ses conteneurs sur NULL et cela invalide quels process de la stl associé!!?

  4. #24
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par DEVfan Voir le message
    Merci pour le lien, je le perds toujours celui-là!

    ça me rassure pour l'appel automatique du destructeur :

    Et si ça le fait pour erase, ça doit bien le faire pour toute destruction!!!
    Oui mais si ses un vecteur de pointeur. C'est le pointeur qui est detruit, pas ce qui est pointé. C'est pas la même chose
    Citation Envoyé par DEVfan Voir le message
    Bon par contre, ça change rien au pb. Dans quel cas le vecteur peut-il mettre tous ses conteneurs sur NULL et cela invalide quels process de la stl associé!!?
    J'ai pas bien compris... Comment sait tu que ton conteneur contiens que des NULL???
    Tu developpe avec quoi?

  5. #25
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 167
    Par défaut
    Ce sont des vecteurs d'une classe C... pas de vecteur de pointeur

    Ensuite, je développe avec Eclipse et les options standard pour le C++. Lors du debug, on peut suivre des variables et en particulier les iterateurs début, fin et fin de stockage ... et ceux là sont dans ce cas précis à NULL (0x00000000). Et ça me pose un problème!! Il veut pas le remplir! (avec=truc ou avec push_back ou insert, etc.!!!)

  6. #26
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Ça ressemble a quoi l'interface de la fonction soudure?
    Et tu sur de ton interprétation??
    Genre _M_start, _M_finish, _M_end_of_storage vaut zero car
    les structures GLignage associées sont composé que de zéro en memoire?

  7. #27
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 167
    Par défaut
    Oui, c'est possible... je met en pj le lieu du pb d'un point de vue graphique

    Avt l'appel de la fonction, vecteur normal mais de taille nulle et dedans, vecteur recopié "à NULL".

    RQ : la fonction s'appelle en réalité soude_jointure mais j'ai racourci en soudure ... et j'en changerais sans doute encore une fois le code fini Mais l'idée est la même.
    Images attachées Images attachées   

  8. #28
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    tu pourrais mettre ton code soudure jointure?
    par ce que la j'ai plus d'idée

  9. #29
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 167
    Par défaut
    oui ... mais elle fait rien pour l'instant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    bool GLignage::soude_jointure(vector<GLignage>& amas)
      {
    //l'amas est déjà invalide ici... iterateurs sur NULL
       if(amas.size()==0)
         {
    	  amas.push_back(*this);
    	  return 1;
         }
     
       bool stop=false;
       int compteur=0;
     
       while(!stop)
         {
    	  stop=true;
    	  for(vector<GLignage>::iterator ite=amas.begin();ite<=amas.end();++ite)
            {
    		 if(joint(*ite))
    		   {
    			compteur++;
    			//break; j'optimiserais plus tard
    		   }
            }
         }//fin du while
     
       //risque de jointure en cascade : 
       /*if(compteur>1)
         {
     
         }*/
       //todo
       return (compteur>0);
      }
    /////
    RQ : joint modifie l'objet passé en paramètre dans certaines conditions... mais même en commentaire, le pb reste (logique!)

  10. #30
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 167
    Par défaut
    J'ai refait qq tests ... et ce n'est pas le seul cas où les vector<GLignage> sont créés à NULL. J'ai alors relu la doc STL sur les vector et il semblerait que ce soit logique d'après cette phrase :

    explicit vector ( const Allocator& = Allocator() );
    Default constructor: constructs an empty vector, with no content and a size of zero.
    Mais parfois, ce n'est pas à NULL... donc mystère.

    Le pb est donc ailleurs...


    EDIT : nouvel cause en cours...
    passer une référence sur un vector dans une méthode (ou un fonction) puis modifier le contenu du vector... qu'obtient-on à la sortie... et bien parfois la même chose qu'au départ!!! Personnellement, je trouve que ça défie mes connaissances du C++!!!

    Normalement, fct(a, &a, *a) permet de laisser a, &a et a intact mais permet de modifier rien, a et *a. (respectivement)

  11. #31
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par DEVfan Voir le message
    J'ai refait qq tests ... et ce n'est pas le seul cas où les vector<GLignage> sont créés à NULL. J'ai alors relu la doc STL sur les vector et il semblerait que ce soit logique d'après cette phrase :

    Mais parfois, ce n'est pas à NULL... donc mystère.

    Le pb est donc ailleurs...
    ???
    ce n'est pas le même problème...

    Question ton code plante?? c'est bien ça? ou c'est juste que tu voie des 0 et donc tu considère que ton code va planter?

    Sinon,a mon avis tu fait une erreur mémoire avant. D'où tes 0 qui apparaisse bizarrement.
    Peut tu mettre toute la fonction où tu appel soude_jointure?

  12. #32
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 167
    Par défaut
    ...en effet et je viens d'en trouver la cause.

    Alors premièrement, je sais pas trop pourquoi ça plante plus... devais y avoir un pb de mémoire qq part... je sens que je retomberais dessus un jour

    Et deuxième pb... il manquait le symbole de référence ... et le gestionnaire eclipse avait librement inventé des méthodes sans, avec et pour pointeur!!! Merci Eclipse!

  13. #33
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par DEVfan Voir le message
    ...en effet et je viens d'en trouver la cause.

    Alors premièrement, je sais pas trop pourquoi ça plante plus... devais y avoir un pb de mémoire qq part... je sens que je retomberais dessus un jour

    Et deuxième pb... il manquait le symbole de référence ... et le gestionnaire eclipse avait librement inventé des méthodes sans, avec et pour pointeur!!! Merci Eclipse!
    lol

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Programmer encore en VB 6 c'est pas bien ? Pourquoi ?
    Par Nektanebos dans le forum Débats sur le développement - Le Best Of
    Réponses: 85
    Dernier message: 10/03/2009, 14h43
  2. Réponses: 19
    Dernier message: 14/11/2006, 16h45
  3. TEdit (encore)
    Par dj.motte dans le forum C++Builder
    Réponses: 5
    Dernier message: 23/12/2002, 19h02
  4. TPalette (encore)
    Par Flipper dans le forum Langage
    Réponses: 3
    Dernier message: 28/11/2002, 23h45

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