Я студент, пишущий метод, который удаляет нули из конца массива целых чисел в C ++.Массив находится в структуре, и в структуре также есть int, который отслеживает длину массива.
Метод проверяет каждый элемент, начиная с последнего, до тех пор, пока не встретит первый ненулевой элемент,и помечает его как «последний элемент», изменяя значение длины.Затем метод возвращается к исходному «последнему элементу», удаляя те элементы, которые не выходят за пределы (нули).
Часть, которая удаляет i
-й элемент в массиве, если i
больше обновленной длины массива, выглядит так:
if (i > p->length - 1) {
delete (p->elems + i); // free ith elem
Эта строка, однако, неверна.Удалить берет указатель, да?Поэтому я чувствую, что мне нужно восстановить указатель на массив, а затем добавить к нему i
, чтобы у меня в памяти было целое число, которое я хочу удалить.
Неужели моя интуиция неверна?Ошибка тонкая?Или я правильно понял?Я начал задаваться вопросом: действительно ли мне нужно освободить эти примитивы?Если бы они не были примитивами, мне бы это понадобилось, и в таком случае, как бы я?