У меня есть массив _data
, и я пытаюсь добавить число в массив с определенным position
. Каждое число после индекса position
должно быть сдвинуто на один индекс вправо. У меня возникли проблемы с концепцией этого.Сдвиг элементов справа после определенного индекса
Это то, что у меня как сейчас:
void list::add(int num, size_t position)
{
for (int i = 0; i < _size; i++)
{
_data[position + i + 1] = _data[position + i];
}
_data[position] = num;
}
Например, скажем, Num = 9 и положение = 3 и данные значения в массиве {1, 3, 4, 5, 6, 7}
. Я бы хотел, чтобы это было {1, 3, 4, 9, 5, 6, 7}
. Однако в конечном итоге происходит захват числа, которое уже было заменено, и помещает его обратно в массив. (Например 1, 3, 4, 9, 5, 5, 5
}
Сдвиг правого первого – Danh
Используйте небольшой массив, скажем, только с двумя элементами. Возьмите лист бумаги. Используя карандаш, нарисуйте два квадрата и положите «1» и «2» внутри каждого квадрата. Это ваш массив с двумя значениями. Теперь пройдите через свой код, по одной строке за раз, и обновите каждое значение в массиве на бумаге, как именно это делает ваш код. Вы должны быть в состоянии легко понять, где вы поступили не так. –