9 réponses
Salut,
En quel langage ? En C ?
En C :
En quel langage ? En C ?
En C :
char *tab[]={"premier","deuxieme","troisieme"};
tab[sizeof tab/sizeof *tab - 1]=NULL;
Bien, je t'ai donné la méthode ;-).
Tu mets un NULL à la dernière case en prenant soin de faire un delete si nécessaire pour la libération de la mémoire.
Tu ne peux pas réduire la taille d'un tableau à moins de faire une recopie dans un tableau plus court.
Par contre si tu utilises un pointeur sur une zone du tas, tu pourras réduire dynamiquement la taille de la zone allouée.
Tu mets un NULL à la dernière case en prenant soin de faire un delete si nécessaire pour la libération de la mémoire.
Tu ne peux pas réduire la taille d'un tableau à moins de faire une recopie dans un tableau plus court.
Par contre si tu utilises un pointeur sur une zone du tas, tu pourras réduire dynamiquement la taille de la zone allouée.
J'ai utilisé le NULL et j'ai une erreur à la compilation :(
Voila mon code:
void Boite:: supprimerPoint( const Point & p)
{
bool existe=false;
int i=0;
while(i<my_nb_points && !existe)
{
if(p.getX()==my_points[i].getX() || p.getY()==my_points[i].getY())
existe=true;
i++;
}
if(existe)
for(int j=my_nb_points; j>i; j++)
my_points[i-1]=my_points[i];
my_points[5]=NULL;
}
Voila mon code:
void Boite:: supprimerPoint( const Point & p)
{
bool existe=false;
int i=0;
while(i<my_nb_points && !existe)
{
if(p.getX()==my_points[i].getX() || p.getY()==my_points[i].getY())
existe=true;
i++;
}
if(existe)
for(int j=my_nb_points; j>i; j++)
my_points[i-1]=my_points[i];
my_points[5]=NULL;
}
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
en fait c'est une variable. Pour l'instant, elle vaut 8. Mais je pense que je devrai plutot utiliser un delete sur la 8ème case non? Je ne sais pas comment on fait pour utiliser le delete sans effacer tout le tableau.
Je viens de comprendre ce qui ne plais pas au compilateur. En réalité my_points est un tableau de points (c'est une classe que j'utilise), je n'ai donc pas le droit de dire "my_points=..." si ce n'est pas un point que je met après le =. C'est pourquoi je voudrais utiliser un delete
Ah, d'accord. Au début t'avais dit un tableau de pointeurs, donc ça change tout.
En fait, tu as simplement un tableau d'objets. Et tu ne pourras pas réduire sa taille.
Donc tu fais un delete de la case que tu veux, ceci libérera la mémoire consommée par l'objet. Mais cela ne réduira pas le tableau. Après, c'est à toi de gérer le fait qu'il ne faut plus utiliser telle ou telle indice. En l'occurrence, s'il s'agit du dernier élément, tu réduis la taille d'une variable comprenant le nombre d'élément du tableau.
Après, si tu veux à tout pris pouvoir vraiment supprimer une case spécifique, il est plus commode d'utiliser des listes chaînées.
En fait, tu as simplement un tableau d'objets. Et tu ne pourras pas réduire sa taille.
Donc tu fais un delete de la case que tu veux, ceci libérera la mémoire consommée par l'objet. Mais cela ne réduira pas le tableau. Après, c'est à toi de gérer le fait qu'il ne faut plus utiliser telle ou telle indice. En l'occurrence, s'il s'agit du dernier élément, tu réduis la taille d'une variable comprenant le nombre d'élément du tableau.
Après, si tu veux à tout pris pouvoir vraiment supprimer une case spécifique, il est plus commode d'utiliser des listes chaînées.
non lol. Je suis pas très douée pour m'expliquer, en réalité c'est un tableau de pointeurs qui pointe vers des points. Je sais ce n'est pas simple surtout que je débute^^ Il me faudrait un fonction qui supprime le dernier point du tableau mais je n'ai pas besoin de changer sa taille. En clair je veut supprimer un point, et ces points son stockés dans un tableau dynamique. Mon prof m'a expliqué qu'on ne peut pas supprimer un élément au milieu d'un tableau dynamique, mais il doit y avoir un moyen de supprimer celui qui est sur le dessus de la pile. Encore merci pour ta patience