gpt4 book ai didi

c++ - 仅删除动态分配的结构对象数组的特定元素

转载 作者:行者123 更新时间:2023-11-30 02:32:07 27 4
gpt4 key购买 nike

下面我使用 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/

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