[英]function to double size of array arbitrary number of times?
我正在嘗試讓此函數創建一個新數組,其大小為array參數的2倍,然后將內容復制到新數組中,對於數組的后半部分,請通過在第一個數組中進行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<array.length(); k++)//Initial array copying.
tmp_array[k] = array[k];
for(int i=0; i<number; i++)//Array range 0 to n-1
{
new_array = new int[size*2];
for(int j=0; j<size; j++)//Array range 0 to n-1
{
new_array[j]=tmp_array[j];
new_array[j+size]=2*tmp_array[j];
}
delete[] tmp_array //Deleting old array
size=size*2;
tmp_array = new int[size] //Allocating memory for next iteration
for(int k=0; k<size; k++)
tmp_array[k] = new_array[k];//Copying array for next iteration
}
delete[] tmp_array;// To free memory
return new_array;
};
c數組范圍從0到size-1
更改
for(int i=0; i<number-1; i++)
至
for(int i=0; i<=number-1; i++)
更改
for(int j=0; j<size-1; j++)
至
for(int j=0; j<=size-1; j++)
您正在刪除錯誤的數組
更改
array=new_array;
delete[] array;
至
delete[] array;
array=new_array;
template<class T>
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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.