[英]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.