2017-12-24 4 views
-2

私は以下のAnimalオブジェクトの配列を持っています。 >C++オブジェクト配列1つを取り除く

void AnimalCatalog::Insert(const Animal& animal) { 
    if(actualSize <= maxSize) { 
     animalsArray[actualSize] = animal; 
     actualSize++; 
    } 
} 

そして、私の質問は、私は以下の私の機能を使用して、そこから任意のオブジェクトを削除することができますどのように今ある -

Animal animalsArray = new Animal[maxSize]; 
int actualSize = 0; 

私はそこにオブジェクトを挿入するために、私の機能を使うのか?

void AnimalsCatalog::Delete(const char *animalName) { 
    int index = find(animalName); 
    < what to write here > 
} 

find() is my function which return index of the object from the 
animalsArray 

ありがとうございます!あなたが実際のサイズによってインデックスに実際のサイズによってインデックス1から1をコピーして、また1

によって実際のサイズを小さくします

+0

水飲み鳥あなたのコードはここに、この機能のために書くことができますか? – jorge

+7

@jorge - 解決策はかなり単純です。すべてをスクラップし、 'std :: vector'を使います。 – StoryTeller

+1

私はここにいるほとんどの人がそうすることができると思います。しかし、あなたが試みていないなら、宿題をするつもりはありません。 – drescherjm

答えて

0

、次のテストは、あなたのプログラムは、配列の範囲をオーバーフローすることができます:

< =ではなく、<のテストを行います。

+0

Thx、ここで配列からオブジェクトを削除する機能を手伝ってもらえますか?私はそれを実装し始めたが、私は立ち往生した... – jorge

0

使用std::copy:@

std::copy(animalsArray + index + 1, 
      animalsArray + actualSize, 
      animalsArray + index); 
--actualSize; 
関連する問題