1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
int i = 0;
while(i < vertexesList.Count)
{
int index = vertexesList.IndexOf(vertexesList[i]);
if (index < i)
{
vertexesList.RemoveAt(i);
for(int j = 0; j < indexList.Count; ++j)
{
if (indexList[j] == i)
{
indexList[j] = index;
}
else
{
if (indexList[j] > i)
{
// On a supprimé l'élément à l'index j de la liste.
// Tous les éléments après se retrouvent donc à
// l'index précédent. Il faut donc mettre à jour
// la liste des index.
indexList[j]--;
}
}
}
// on incrémente pas i, pour la simple et bonne raison qu'on vient
// de supprimer l'élément qui était à cet index. L'élément i+1 se retrouve
// donc à l'index i
}
else
{
// Rien à faire. On passe à l'index suivant
++i;
}
} |
Partager