如何使用operator - =从动态分配的对象数组中删除元素而不使用std :: vectors?

时间:2013-08-29 10:51:01

标签: c++ class object dynamic-allocation

重载运算符 - =:

RentACar& operator-=(const Automobile& av)

在RentACar中,我有一个动态分配的Automobile * a

数组

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

我觉得......就好像它没有找到一个具有相同品牌的对象一样,它返回* this,但如果确实如此,它为一个大小为a-1的新汽车数组分配空间,分配对象,跳过同一品牌的那个,但是我不知道怎么写。

我不知道如何用向量写字并推回,无论如何,我为考试而学习,我们从来没有使用过任何理由的矢量因此我不能在考试中使用它们所以我必须这样做,即使它是一个愚蠢的实施!

谢谢!

1 个答案:

答案 0 :(得分:2)

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

创建新数组时没有任何理由 删除对象。只需跟踪逻辑结束 阵列。