Как только вопрос касается динамического массива, вы можете захотеть не только создать массив с переменным размером, но и изменить его размер во время выполнения.Вот пример с memcpy
, вы также можете использовать memcpy_s
или std::copy
.В зависимости от компилятора может потребоваться <memory.h>
или <string.h>
.При использовании этих функций вы выделяете новую область памяти, копируете в нее значения исходных областей памяти и затем освобождаете их.
// create desired array dynamically
size_t length;
length = 100; //for example
int *array = new int[length];
// now let's change is's size - e.g. add 50 new elements
size_t added = 50;
int *added_array = new int[added];
/*
somehow set values to given arrays
*/
// add elements to array
int* temp = new int[length + added];
memcpy(temp, array, length * sizeof(int));
memcpy(temp + length, added_array, added * sizeof(int));
delete[] array;
array = temp;
Вы можете использовать константу 4 вместо sizeof(int)
.