重载运算符 -=:
RentACar& operator-=(const Automobile& av)
在 RentACar 中,我有一个动态分配的 Automobile *a 数组
所以假设如果任何 a
具有与 av.brand
相同的 a.brand
那么应该删除 a 并分配为一个对象释放的内存。
我以为……就像如果它没有找到一个具有相同品牌的对象它返回 *this,但如果它找到了,它为一个新的汽车数组分配空间,大小为 a-1,分配对象,跳过具有相同品牌的对象,但是我不知道怎么写。
我不知道如何用 vector 写作并推迟,无论如何,我为考试而学习,我们出于任何原因从未使用过 vector ,所以我不能在考试中使用它们,所以即使它我也必须这样做是一个愚蠢的实现!
谢谢!
最佳答案
首先,您必须找到要删除的对象:
std::find_if
对此很有用,但如果是类作业,它们
可能期望您编写自己的线性实现
搜索。找到条目后,您可以删除
指针,
并将其设置为 null(并确保所有其他逻辑都有效
当数组中有空指针时正确),或者移位
以下所有条目向下一项。 (std::copy
可以是
用于换类。)当然,如果你换类,你也会有
跟踪数组中有效条目的结束位置。
当 删除对象。只需跟踪的逻辑结束 大批。
关于c++ - 如何在不使用 std::vectors 的情况下使用运算符 -= 从动态分配的对象数组中删除元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18508963/