krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 201549 16 juil. 2009 à 12:44
"Pour supprimer des éléments d'une liste, il faut toujours commencer par le dernier"
Tout à fait !
(sauf si on cherche à se casser la tête et à avoir un programme incompréhensible qui change l'index à chaque suppression,
ou si, comme dans mon exemple, on reprend tout depuis le début à chaque fois qu'on en a supprimé un (mais comme indiqué, c'est pas ce qu'il y a de plus rapide))
La raison est simple, prenons ce tableau :
Indice : 0 1 2 3 4 5 6 7 8
Valeur : A B C D E F G H I
Si l'on veut supprimer C, F et H (donc les indices 2, 5 et 7).
Imaginons qu'on commence par le premier : on supprime le 2ème (pas de problème et on obtient ça :
Indice : 0 1 2 3 4 5 6 7
Valeur : A B D E F G H I
Si ensuite on supprime le 5ème, au lieu de supprimer F, on supprime G => c'est pas ce qu'on voulait.
Indice : 0 1 2 3 4 5 6
Valeur : A B D E F H I
Ensuite, on tente de supprimer le 7ème... => IndexOutOfRangeException
Maintenant, si tu le fais à l'envers (en commençant par le 7, puis le 5 et enfin le 2, tu vois qu'il n'y a pas de problème, puisque seuls les indices supérieurs changent lors de l'insertion ou la suppression de données.
Mais à moins que tu aies des besoins de performances dans ton programme, j'aime bien ma méthode, qui tient sur une ligne et qui me semble très lisible.
Krimog : while (!(succeed = try())) ; - NON, "LE BAR" n'est PAS un langage de programmation ! -