У меня есть массив структуры (с параметрами имени и числа), а исходный массив принимает элементы из документа, который я создал. Начальный размер списка начинается с 1000. Когда список заполняется, я вызываю другой метод, с которым я борюсь. Я бы хотел, чтобы он скопировал данные в новый массив, который удваивал размер, а затем удалял старый массив.Копировать массив, а затем удалить оригинал
Если я назову его: array1 и array2, у меня есть моя программа, использующая массив1. Мне нужна помощь с указателями, которые заставят array2 работать как array1.
Есть ли способ скопировать массив в массив temp того же или нового размера, а затем переделать исходный массив, переназначающий это? Для этого упражнения я не могу использовать векторы. Хотя я знаю, как их использовать, и что они решают эту проблему, хотя я лучше, я пытаюсь сделать это только с массивами.
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 (начальный размер списка), а затем выходит из строя вскоре после этого. Правильно ли дублирующий массив?
Пожалуйста, говорите меньше и покажите нам код, с которым вы боретесь ... – Christophe
Используйте 'std :: vector'. –
Попробуйте googling "memcpy" –