Fermer2
FarewellLe 23/08/2014 à 16:06
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.html

Merci d'avance.