Je suis un étudiant qui écrit une méthode qui supprime des zéros de la fin d'un tableau d'ints, en C++. Le tableau est dans une structure, et la structure a aussi un int qui garde une trace de la longueur du tableau.Est-il nécessaire de supprimer des éléments lors du rétrécissement d'un tableau?
La méthode examine chaque élément à partir de la dernière, jusqu'à ce qu'il rencontre le premier élément non nul, et marque celui-ci comme "dernier élément" en changeant la valeur de la longueur. Ensuite, la méthode revient au "dernier élément" d'origine, en supprimant les éléments qui ne sont pas hors limites (les zéros).
La partie qui supprime l'élément i
e dans le tableau si i
est supérieure à la longueur mise à jour du tableau, ressemble à ceci:
if (i > p->length - 1) {
delete (p->elems + i); // free ith elem
Cette ligne ne va pas, cependant. Supprimer prend un pointeur, oui? Donc mon sentiment est que j'ai besoin de récupérer le pointeur sur le tableau, puis ajouter i
pour que j'aurai l'emplacement de la mémoire de l'entier que je veux supprimer.
Est-ce que mon intuition est incorrecte? L'erreur est-elle subtile? Ou, ai-je la toute fausse idée? J'ai commencé à me demander: ai-je vraiment besoin de libérer ces primitifs? S'ils n'étaient pas primitifs, j'en aurais besoin, et dans ce cas, comment le ferais-je?
pouvez vous montrer comment la struct ressemble et la déclaration de « p »? –