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

标签 c++ arrays pointers free

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

相关文章:

C++;编译时警告 "enabled by default"是什么意思?

ios - 使用 slider 导航一系列图像

javascript - 过滤并创建一个新数组

c - C甚至有 "pass by reference"吗?

c++ - 使用 lambda 按降序创建字符串集

c++ - 匹配多种类型以进行模板特化解析

c++ - 不同的编译器,不同的语法

c# - 使用 Newtonsoft 将 JSON 数组反序列化为元组列表

c - 为 3D 数组分配内存

c++ - 2个c源文件之间的函数指针操作导致编译时错误