0

重载运算符 -=:

RentACar& operator-=(const Automobile& av)

在 RentACar 我有一个动态分配的汽车数组 *a

因此,可以说,如果任何与thena相同,则应该删除 a 并为一个对象释放分配的内存。a.brandav.brand

我想…… 就像如果它没有找到具有相同品牌的对象,它会返回 *this,但如果找到,它会为大小为 a-1 的新汽车数组分配空间,分配对象,跳过具有相同品牌的对象,但我不知道怎么写。

无论如何,我不知道如何用矢量写作并推回,我为考试而学习,我们从未出于任何原因使用矢量,所以我不能在考试中使用它们,所以即使它是愚蠢的,我也必须这样做执行!

谢谢!

4

1 回答 1

2

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

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

于 2013-08-29T10:58:38.820 回答