функция удваивает размер массива произвольное количество раз?

Я пытаюсь получить эту функцию для создания нового массива, равного 2x размера аргумента массива, скопировать содержимое в новый массив и для второй половины массива создать новые значения, выполнив 2 * значения в первом половину массива, затем удалите исходный массив. Повторите этот процесс за указанное количество раз, затем верните новый массив. Я чувствую, что у меня есть правильный алгоритм, но мой код не работает. Пожалуйста помоги!

int *ArrayDynamicAllocation(int array[], int size, int number) { int *new_array = NULL; for(int i=0; i<number-1; i++) { new_array = new int[size*2]; for(int j=0; j<size-1; j++) { new_array[j]=array[j]; new_array[j+size]=2*array[j]; } array=new_array; delete[] array; size=size*2; } return new_array; } 

Пример вывода будет, если моя информация для ввода в мою функцию была int arr [2] = {0,1}; array_size = 2; число = 3; Я хочу, чтобы он выводил 0 1 0 2 0 2 0 4 0 2 0 4 0 4 0 8

 int *ArrayDynamicAllocation(int array[], int size, int number) { int *new_array = NULL; int *tmp_array = new int[array.length()]; for(int k=0; k 

c массив от 0 до размера-1
менять

 for(int i=0; i 

в

 for(int i=0; i<=number-1; i++) 

менять

 for(int j=0; j 

в

 for(int j=0; j<=size-1; j++) 

вы удаляете неправильный массив
менять

 array=new_array; delete[] array; 

в

 delete[] array; array=new_array; 
  template void changeSize1d(T*&a, const int oldSize, const int newSize){ if(newSize<0)return 0; T*temp new T[newSize]; int number = min(oldSize, newSize); copy(a, a+number, temp); delete [] a; a = temp; }