【发布时间】:2016-03-02 22:50:11
【问题描述】:
我有一个结构数组(带有名称和数字的参数),初始数组从我制作的文档中获取元素。初始列表大小从 1000 开始。当列表填满时,我调用另一个我正在努力解决的方法。我想让它把数据复制到一个大小翻倍的新数组中,然后删除旧数组。
如果我将它命名为:array1 和 array2,我的程序将始终使用 array1。我需要有关使 array2 用作 array1 的指针的帮助。
有没有办法将数组复制到相同或新大小的临时数组,然后重新制作初始数组并重新分配回该数组?对于这个练习,我不能使用向量。虽然我知道如何使用它们,并且它们可以更好地解决这个问题,但我正在尝试只使用数组。
using namespace std;
struct Information {
char functionality;
int SSN;
string name;
};
int numPeople = 1000;
//Gets called if the initial array (whatever size) is filled
void doubleArray(Information *array){
numPeople = numPeople * 2;
//Will now be the doubled array size
Information temp[numPeople]
for(int i = 0; i < numArray; i++){
temp[i].SSN = array[i].SSN;
temp[i].name = array[i].name;
}
//Normally makes it crash
delete[] array;
}
编辑:这是我目前拥有的
void doubleArray(Information *person){
numPeople = numPeople * 2;
Information* temp = new Information[numPeople];
memcpy(temp, person, numPeople);
delete[] person;
person = temp;
}
它达到 numPeople = 1000(初始列表大小),但不久后崩溃。加倍数组正确吗?
【问题讨论】:
-
请少说话,向我们展示您正在努力解决的代码...
-
尝试谷歌搜索“memcpy”
-
@Christophe 他无法显示代码,因为他正忙于与它斗争。