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 :

STL : clear() qui resiste :/


Sujet :

SL & STL C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 21
    Par défaut STL : clear() qui resiste :/
    Bonjour a tous,
    je débute avec la STL et j'ai la fonction clear() qui ne veux (apparement) pas s'executer normalement, apparement elle ne vide pas le vector comme elle devrais puisque j'ai encore accès aux objets du conteneur.
    Voici ma source:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        vector<CASE> ligne_temp;            
        vector< vector<CASE> >  carre_temp;
     
    for(int i=0;i<81;i++){
        CASE c(0,i);                   
        ligne_temp.push_back(c);
        if ((i+1)%(int)sqrt(taille)==0){         // si i+1 modulo racine carré de la taille est 0 on fait le traitement
           carre_temp.push_back(ligne_temp);
           ligne_temp.clear();
        }
    }
    J'ai testé juste après le ligne_temp.clear() et j'ai toujours accès a toutes les valeurs je ne comprend pas.
    Avez vous une idée du problème? Merci d'avance

  2. #2
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    En effet, il y a un problème, j'ai déjà utilisé clear et il a jamais buggué, tu es sûr que tu rentres bien dans le if ?
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 21
    Par défaut
    Oui le test est bon j'ai vérifié plusieurs fois...

  4. #4
    Membre expérimenté
    Avatar de superspag
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    153
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 153
    Par défaut
    Citation Envoyé par crakos
    J'ai testé juste après le ligne_temp.clear() et j'ai toujours accès a toutes les valeurs je ne comprend pas.
    Comment as tu fais ton test ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 21
    Par défaut
    par defaut taille vaux 9 donc sa racine carré 3, ce qui signifie qu'on rentre dans la boucle tous les 3 soit 81/3 = 27fois. j'ai mis un compteur qui maffiche bien 27 à la fin.

    Pour tester que le clear ne fonctionne pas j'ai rajouté juste après
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ligne_temp.clear();
    ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    for(int j=0;j<3;j++){ligne_temp[j].affiche_nb_theorique();cout<<endl;}
    nb_theorique est un nombre contenu dans ma case. Et l'affichage me ressort tous les chiffres alors que si j'ai bien compris, le tableau devant être vide cela devrait planter ou me sortir n'importe quoi, or ça me sort les bons chiffres.

  6. #6
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Le conteneur est vide si tu appelles empty(), mais la mémoire n'est pas désallouée, c'est normal, ça marche comme ça, ça évite d'avoir à réallouer dans la foulée.

  7. #7
    Membre expérimenté
    Avatar de superspag
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    153
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 153
    Par défaut
    Oui voilà, je pensais bien que ton test etait comme ça... aprés l'appel de la fonction clear(), si tu regarde la taille de ton vecteur avec la fonction size(), elle doit etre de zero.

    C'est completement heretique de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    for(int j=0;j<3;j++){ligne_temp[j].affiche_nb_theorique();cout<<endl;}
    il faut toujours se référer aux données du conteneur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    for(size_t j=0;j<ligne_temp.size();j++){ligne_temp[j].affiche_nb_theorique();cout<<endl;}

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 21
    Par défaut
    ok merci beaucoup, je comprends mieux maintenant

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

Discussions similaires

  1. [Clé USB] Cle USB verrouillee qui resiste aux commandes DOS adequates
    Par bigbernie dans le forum Périphériques
    Réponses: 5
    Dernier message: 26/07/2014, 16h53
  2. un petit bug qui resiste
    Par hunter99 dans le forum C++
    Réponses: 17
    Dernier message: 25/12/2007, 15h49
  3. [STL] Clear une liste de pointeurs
    Par mambo dans le forum SL & STL
    Réponses: 2
    Dernier message: 21/03/2007, 16h07
  4. un objet qui s'efface d'une liste STL
    Par BruceBoc dans le forum SL & STL
    Réponses: 17
    Dernier message: 21/02/2007, 21h21
  5. Réponses: 15
    Dernier message: 24/12/2006, 14h28

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