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]Suppression d'un objet dans un vector


Sujet :

SL & STL C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14
    Par défaut [STL]Suppression d'un objet dans un vector
    Bonjour à tous,
    en faite, j'ai un problème concernant les vecteurs de pointeurs,
    Dans une méthode "Get_Objects_Coverd_P"
    Je fais un parcours sur un vecteur de pointeurs "table" qui sont des objets possedant un nom ,un min et un max. Parmi les objets stockés, je voulais récupérer les objets qui sont inclus dans un objet P bien défini (c'est à dire ,la borne inf d'un objet est >= à lla borne inf de P et la borne sup d'un objet est <= par rapport à P)
    les objets retenus sont stockés dans un nouveau vecteur de pointeurs qui s'appelle "Template_Object_Covered_P". et doivent être suuprimés du vecteur "table".
    j'ai utilisé erase pour les effacer mais ça fonctionne pas.les objets ne s'effacent pas.
    par contre quand j'applique ça dans main sans passer par une méthode ça marche.
    A votre avis ,est ce que c'est à cause que je travaille sur des pointeurs???
    Aidez moi
    ci dessous le code :

    Code c++ : 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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
     
     /*************************************Objets Couverts par P**************************************************************/
    vector<Object*> Get_Objects_Coverd_P(vector<Object*>table){
    vector<Object*>Template_Object_Covered_P; 
    Object* OD;
    Object* P;
    int ind_p;
     
    /***********************************Recherche de l'objet dominant*********************************************************/
    OD = table.front();   
    cout <<"L'objet dominant est : "<<OD ->Get_Name()<<endl; 
     
    /***************************************Recherche d'un objet en intersection partielle avec l'objet dominant**************/ 
    P = Get_P(table);  // P est déjà calculé
     
    /*************************Recherche des objets couverts par l'objet P ****************************************************/ 
    if(P!=NULL){
    /**************************On cherche dans la liste initiale**************************************************************/
    Template_Object_Covered_P.clear();
    for(ind_p=1;ind_p<table.size();ind_p++){
      if((table[ind_p]->Get_Min()>=P->Get_Min()) && (table[ind_p]->Get_Max()<=P->Get_Max())){
        Template_Object_Covered_P.push_back(table[ind_p]);
        table.erase(table.begin()+ind_p);     // Le problème est ici
        ind_p--;
      }
    }
    return Template_Object_Covered_P;
    }
    }
     
     
     
     
    /******************************************************MAIN********************************************************/
    int main()
    {
      char fileName [LGMAX_FILE_NAME + 1] ;
      string name;
      int min, max;
      bool istemplate;
      int nb_objects=0;
      int i;
      string Z_String ;
      vector<Object*> table_objects;
      vector<Object*> objects_covered_P;
     
     
      /**************Lecture des informations dans le fichier qui contient les noms des objets leurs Xmin et leurs Xmax************/
      cout << "name of the file : " ;
      cin >> setw (LGMAX_FILE_NAME) >> fileName ;
      ifstream entree (fileName, ios::in|ios::binary) ;   // ou ios::in
      if (!entree) { cout << "Error: can not open the file " << fileName <<endl ;
                     exit (-1) ;
                   }
     
      while(!entree.eof())
      {
      	entree >> name;
      	entree >> min;
      	entree >> max;
    	if(name == "*") break;
    	else
      	cout << "name: " << name << " min: " << min << " max: " << max << endl ;
    	table_objects.push_back(new Object(name,min,max,false));
      	nb_objects++;
      }
     
      entree.close () ;
      cout << "**************************************************************\n";
      cout << " Voici les noms, les min, les max des objets de votre image \n";
      cout << "**************************************************************\n";
      cout << "Nb objects: " << nb_objects << endl;
     
     
    for(i= 0; i< nb_objects;i++){
         cout<<table_objects[i]->Get_Name()<<"\t"<<table_objects[i]->Get_Min()<<"\t"<<table_objects[i]->Get_Max()<<"\n";
    }
    cout << "Taille du vecteur d'objets: " << table_objects.size()<<"\n";
     
    objects_covered_P = Get_Objects_Coverd_P(table_objects);
    cout<<"les objets couverts par P sont :"<<endl;
    for(int y=0;y<objects_covered_P.size();y++)
       cout<<objects_covered_P[y]->Get_Name()<<"\t";
    cout<<endl;
     
     
    /*for(int z=0;z<table_objects.size();z++){
    table_objects.erase(table_objects.begin()+z);
    z--;
    }
    cout<<endl;*/
     
    cout<<"Table Objects contient :"<<endl;
    for(int k=0;k<table_objects.size();k++)
       cout<<table_objects[k]->Get_Name()<<"\t";
    cout<<endl;
    }

  2. #2
    Membre Expert
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Par défaut
    y'a la FAQ

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14
    Par défaut
    Citation Envoyé par coyotte507
    y'a la FAQ
    merci pour ta proposition
    j'ai fouillé la faq avant de poster !!

  4. #4
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Tout est LA

    Enfin presque....

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14
    Par défaut
    oui merci
    j'ai déjà vu ça
    j'ai testé le code pour mon application,
    la suppression des objets ne fonctionne pas !

  6. #6
    Membre Expert
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        table.erase(table.begin()+ind_p);     // Le problème est ici
    >>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    delete table[ind_p];
    table.erase(table.begin()+ind_p);

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 01/07/2009, 12h38
  2. suppression d'un pointeur sur un objet dans un vector
    Par Mindiell dans le forum SL & STL
    Réponses: 9
    Dernier message: 07/08/2008, 14h42
  3. Existence d'un objet dans un Vector
    Par FabaCoeur dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 03/03/2008, 20h51
  4. STL - objet dans un vector/deque
    Par ivles dans le forum SL & STL
    Réponses: 11
    Dernier message: 26/02/2007, 11h38
  5. objets dans un vector
    Par anasama dans le forum SL & STL
    Réponses: 2
    Dernier message: 21/04/2006, 10h21

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