下面我使用 new[]
分配了一个包含 5 个结构对象的数组,其中只有 3 个我用来放置我的数据,其余的我想删除。下面是程序。它会产生最后提到的编译错误。
#include<iostream>
using namespace std;
struct Test
{
int data;
Test() { cout<<"struct created"<<endl; }
};
int main()
{
Test *t1;
t1 = new Test[5];
int i,n;
n=3;
for(i=0;i<n;i++)
t1[i].data=(i+10);
while(i<5)
{
delete t1[i];
i++;
}
}
编译错误为
error: type ‘struct Test’ argument given to ‘delete’, expected pointer
最佳答案
一个数组在其生命周期中包含的对象数量与它首次创建时的对象数量完全相同。您不能添加更多,也不能“删除”它们。当数组被销毁时,所有包含的对象都将被销毁。
如果您想要一个包含可变数量对象的数组,那么您正在寻找 std::vector
。
关于c++ - 仅删除动态分配的结构对象数组的特定元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36791268/