[c++] effacer un tableau de pointeur

effacer un tableau de pointeur [c++] - C++ - Programmation

Marsh Posté le 27-02-2003 à 15:21:15    

Imaginons un truc du style :
 
char **tabStrings;
int nb_strings=10;
 
tabStrings = new char*[nb_strings];
for(int i=0; i<nb_strings; i++)
  tabStrings[i] = new char[strlen(CHAINE A STOCKER)];
 
..............
bon jusque là ça va (à moins que j'ai rien compris du tout)
..............
 
Quand je veux effacer tout ça on peux faire directement
delete [] tabStrings;
tabStrings=NULL;
 
ou alors y faut tout effacer càd
for(i=0; i<nb_strings; i++)
{
  delete [] tabStrings[i];
  tabStrings[i]=NULL;
}
delete [] tabStrings;
tabStrings=NULL;
 
Et autre question du même style, si on fait un tableau de pointeurs vers des classes :
 
Class A
{
  int *tabInt;
  char *string;
 
  A()
  {
    tabInt=new int[50];
    string=new char[50];
  }
  ~A()
  {
    delete [] tabInt;
    tabInt=NULL;
 
    delete [] string;
    string=NULL;
  }
};
 
tabPtClasseA **A;
int nb_classes_A=10;
 
tabPtClasseA = new A*[nb_classes_A];
for(int i=0; i<nb_classes_A; i++)
  tabPtClasseA[i] = new A();
 
Si on veut tout effacer y faut faire
delete [] tabPtClasseA;
tabPtClasseA=NULL;
 
ou alors
for(i=0;i<nb_classes_A;i++)
{
  delete tabPtClasseA[i];
  tabPtClasseA[i]=NULL;
}
delete [] tabPtClasseA;
tabPtClasseA=NULL;
 
 :pt1cable:  :pt1cable:  
Désolé c l'embrouille totale, à l'aide!  :cry:   :cry:

Reply

Marsh Posté le 27-02-2003 à 15:21:15   

Reply

Marsh Posté le 27-02-2003 à 16:21:24    

Enfin bon en bref, le truc c que quand on a un tableau d'objets le tout alloué dynamiquement:  
?
y faut d'abord effacer tous les objets puis le tableau  
OU ALORS  
y suffit d'effacer le tableau  
?
(dis comme ça c mieux je crois!! :whistle: ).

Reply

Marsh Posté le 27-02-2003 à 17:00:24    

t'effaces chaque case du tableau puis le tableau

Reply

Marsh Posté le 27-02-2003 à 17:23:17    

ok thx

Reply

Marsh Posté le 27-02-2003 à 19:27:26    

et les std::vector<std::string> ça te dit quelque chose?

Reply

Marsh Posté le 27-02-2003 à 22:49:03    

euh non :D  :sol:

Reply

Marsh Posté le 27-02-2003 à 23:38:26    

ben en gros les vector et les string sont standards et se proposent de te faire, de façon sure et bien meilleure tout le boulot que tu t'escrimes à accomplir. et en plus, ils ont la gentillesse de fournir plein d'autres fonctionnalités... pour ma commission on verra ça en MP
 
std::vector
http://www.sgi.com/tech/stl/Vector.html
 
et pour les std::string, y a des liens dans le bibliolinks C++
 
hesite pas à poster tes problèmes avec l'utilsiation de STl. ca va te demander un peu d'apprentissage mais ton programme n'en sera que meilleur et plus sure.
 

Reply

Marsh Posté le 28-02-2003 à 12:55:01    

ok merci je vais jeter un coup d'oeil (et + si affinités  :) )

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed