Кажется, что у него должно быть очень простое решение, но я просто не могу его понять. Я просто создаю массив с измененным размером и пытаюсь скопировать все исходные значения, а затем, наконец, удаляю старый массив, чтобы освободить память.
void ResizeArray(int *orig, int size) {
int *resized = new int[size * 2];
for (int i = 0; i < size; i ++)
resized[i] = orig[i];
delete [] orig;
orig = resized;
}
Кажется, что здесь происходит то, что resized[i] = orig[i]
копирует значения по ссылке, а не по значению, поскольку печать orig после изменения размера возвращает кучу ненужных значений, если я не закомментирую delete [] orig
. Как я могу сделать глубокую копию из оригинала в измененный размер, или есть какая-то другая проблема, с которой я сталкиваюсь? Я не хочу использовать std::vector.
std::vector
, вы многое выиграете, заключив это в класс, чтобы клиенты могли передавать инвариантный объект и не должны были управлять тем фактом, что указатель реализации меняется при каждом изменении размера. :-/ - person HostileFork says dont trust SE   schedule 09.11.2011