0

演算子のオーバーロード -=:

RentACar& operator-=(const Automobile& av)

RentACar には、動的に割り当てられた Automobile *a の配列があります

したがってa、同じものがある場合は、a.brandaav.brandを削除し、割り当てられたメモリを 1 つのオブジェクトに解放する必要があるとしましょう。

と思いました。同じブランドのオブジェクトが見つからない場合は *this を返しますが、見つかった場合は、サイズが a-1 の新しい自動車配列にスペースを割り当て、オブジェクトを割り当て、同じブランドのものをスキップしますが、書き方がわからない。

ベクトルで書く方法がわからず、押し返すとにかく、私は試験のために勉強していますが、何らかの理由でベクトルを使用したことがないため、試験では使用できないので、たとえそれがばかげていてもこれを行う必要があります実装!

ありがとう!

4

1 に答える 1

2

まず、削除したいオブジェクトを見つける必要があります。 std::find_ifこれには適していますが、それが授業である場合、線形検索の独自の実装を作成する必要があるかもしれません。エントリが見つかったらdelete、ポインターを null に設定するか (配列に null ポインターがある場合に他のすべてのロジックが正しく機能することを確認します)、または次のすべてのエントリを 1 つ下にシフトします。(std::copyをシフトに使用できます。) もちろん、シフトする場合は、配列内の有効なエントリが終了する場所も追跡する必要があります。

オブジェクトを削除するときに新しい配列を作成する理由は特にありません。配列の論理的な終わりを追跡するだけです。

于 2013-08-29T10:58:38.820 に答える