如何在不使用std::vectors的情况下,使用运算符==从动态分配的对象数组中删除元素

How to remove an element from a dynamically allocated array of objects with operator -= without using std::vectors?

本文关键字:动态分配 元素 对象 数组 删除 情况下 std vectors 运算符      更新时间:2023-10-16

重载运算符-=:

RentACar& operator-=(const Automobile& av)

在RentACar中,我有一个动态分配的汽车阵列*

因此,假设任何一个a具有与av.brand相同的a.brand,那么应该删除a,并为一个对象释放分配的内存。

我想,如果它没有找到相同品牌的对象,它会返回*这个,但如果它找到了,它会为a-1大小的新汽车阵列分配空间,分配的对象,跳过相同品牌的,但我不知道如何写。

我不知道如何使用矢量进行书写和推回,无论如何,我为考试而学习,无论出于何种原因,我们从未使用过矢量,所以我不能在考试中使用它们,所以我必须这样做,即使这是一个愚蠢的实现!

谢谢!

首先,您必须找到要删除的对象:std::find_if对此很好,但如果是课堂作业,它们可能希望您编写自己的线性实现搜索找到条目后,delete指针,并将其设置为null(并确保所有其他逻辑都工作当数组中有空指针时正确),或移位下面的所有条目都向下一个。(std::copy可以是用于轮班。)当然,如果你换了,你也会以跟踪数组中有效条目的结束位置。

当删除对象。只需跟踪大堆