这似乎应该有一个超级简单的解决方案,但我就是想不出来。我只是创建了一个调整大小的数组,尝试将所有原始值复制过来,最后删除旧数组以释放内存。
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
。我该如何从orig制作深层副本以供resized使用,或者我面临的是其他问题?我不想使用std::vector。
std::vector
,将其封装在一个类中,以便客户端可以传递不变的对象,而不必管理实现指针随每次调整大小而改变的事实,这样您也会受益匪浅。 :-/ - HostileFork says dont trust SE