yop,
J'ai besoin d'un algo très élémentaire dans une fonction, pour supprimer un élément dans un tableau. C'est amha un truc qui doit être servi à tous les élèves de première année en étude d'info.
Voilà ce que j'ai écrit :
=> Avec memmove :
void remove_element (int* array, int* element_count, int removeme)
{
for (int i = 0; i < *element_count; i ++)
{
if (array [i] == removeme)
{
memmove (&(array [i]),
&(array [i + 1]),
(*element_count - i - 1) * sizeof (int));
(*element_count) --;
array = realloc (array, *element_count);
return;
}
}
}
=> Avec une boucle for :
void remove_element2 (int* array, int* element_count, int removeme)
{
for (int i = 0; i < *element_count; i ++)
{
if (array [i] == removeme)
{
for (; i < *element_count - 1; i ++)
array [i] = array [i + 1];
(*element_count) --;
array = realloc (array, *element_count);
return;
}
}
}
Je voulais savoir s'il y avait une méthode plus rapide qu'une autre, meilleure qu'une autre ou que sais-je encore, bref, laquelle privilégier, parce que perso je m'en fous et je vois pas de différence notable. A noter que appeler memmove avec une longueur nulle semble être valide :
http://lists.cs.uiuc.edu/pipermail/llvmdev/2007-October/011065.htmlMerci d'avance.