gpt4 book ai didi

c++ - 使用 new 调整数组大小

转载 作者:太空宇宙 更新时间:2023-11-04 12:31:55 24 4
gpt4 key购买 nike

所以我试图通过调用 ResizeArray() 函数来调整数组的大小。但是,我不知道在这种情况下使用“删除”的正确方法是什么。 (我创建了一个新的 int * 并将值从原来的值复制到它然后我让原来的指针指向新的,现在我不知道要“删除”什么

    class Base

{
private:
int sizeInClass;
int *arrayy=nullptr;

public:
Base(int s)
{
sizeInClass=s;
arrayy = new int[s]{};
setValue();
};
void setValue()
{
for(int x=0;x<sizeInClass;x++)
{
arrayy[x]=x;
}
}

void print()
{
int countter=0;
for(int x=0;x<sizeInClass;x++)
{
countter++;
cout<<arrayy[x]<<endl;
}
cout<<"The size of the array is : "<<countter<<endl;
}


void ResizeArray(int newSize)
{
int *newArray = nullptr;

newArray = new int[newSize];

for(int x=0;x<sizeInClass;x++)
{
newArray[x]=arrayy[x];
}

delete [] arrayy; /////////////////////////////////// should i use deleate here ?

arrayy = newArray;

delete [] newArray; /////////////////////////////////// or should I use deleate here ?

sizeInClass = newSize;
}



~Base()
{
delete [] arrayy; /////////////////////////////////// or just use delete here
arrayy=nullptr;
}

};


int main()
{

Base b(5);
b.print();
b.ResizeArray(8);
b.setValue();
b.print();

return 0;

}

最佳答案

您建议的第一个和第三个 delete 是正确的。

关于c++ - 使用 new 调整数组大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58350258/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com