Удаление значения из середины массива
Пытаюсь удалить найденное значение из массива (динамического)
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.
Как это правильно реализовать?