Удаление значения из середины массива

Пытаюсь удалить найденное значение из массива (динамического)

void PopMiddle(int*& arr, int& size, const int value) // Функция удаления
{
int* newArr = new int[size - 1]; // уменьшаю размер нового д.массива на единицу

for (int i = 0; i < size;) // прохожусь циклом для заполнения значений из старого массива
{
    if (arr[i] != value) // ищу число, которое нужно удалить (не индекс)
    {
        newArr[i] = arr[i]; // если не совпало - записываю значение и увеличиваю i
        i++;
    }
    else
    {
        newArr[i] = arr[i + 1]; // если совпало - записываю в индекс нового массива значение по индексу из старого на 1 больше
        i = ?; // и вот тут надо сделать что-то с i, но если я его прибавлю на 1, он в следующем if он просто продублирует значение из старого массива
    }
}

size--; // уменьшаю теперь size 

delete[] arr; // удаляю прошлый массив

arr = newArr; // записываю новый в прошлый
}

Допустим, у меня есть массив на 5 элементов - [1, 3, 5, 7, 9] Хочу удалить 5.

Как это правильно реализовать?


Ответы (0 шт):