std::vector
アイテムなどの「動的」なものを(あなたが呼ぶように)格納するための優れた方法ですが、ベクターの本当の利点は、格納しているものが変化することではなく、ベクター内のアイテムの数が最小限でも変化することです。あなたの側の努力。たとえば、Item
オブジェクトを配列として保存する場合、コンパイル時に配列のサイズを修正Item items[SIZE];
する必要があります()。つまり、アイテムの上限が固定されていることになります(他の問題の中でも特に)この特定の主題に関連するので、スキップします)。
実行時に配列を動的に割り当てることもでき(Item * items = new Item[SIZE];
)、新しいストレージを割り当て、アイテムをコピーし、古いストレージを削除することで、後でアレイのサイズを変更できます。ただし、これはあなたがやらなければならない作業がはるかに多くなります。
幸いなことに、std::vector
これは動的なサイズのアレイ実装であり、基本的に現在の容量を超えてアレイを拡張するためのメモリ管理を処理します。これは間違いなく私が今のところ推奨するオプションですが、Item
クラスを作成する必要があることに注意してください。
使い方はとても簡単です。
// Create an item list and two item objects to add to it.
std::vector<Item> items;
Item fireballPotion("Potion of Fireball");
Item healingPotion("Potion of Healing");
// Add the items:
items.push_back(fireballPotion);
items.push_back(healingPotion);
// operator[] is supported for accessing items.
// This will print "Potion of Fireball" for example:
std::cout << items[0].GetName();
以下のためのMSDNドキュメントvector
クラスはおそらく価値がAのリード、そしてあなたが精通していない場合は、テンプレート -何でvector
、それは「何を」保存できるようにするために使用しています-あなたはそこにも基礎をブラッシュアップする必要があります。これも最終的なポイントにつながります。ベクトルは何でも格納できるように見えますが、許可されているものには制約があり、初心者をスローする場合があります。特に、ベクターに格納するタイプはコピー可能でなければなりません。これは、例えば、ベクターが内部ストレージのサイズを変更するときに、オブジェクトのコピーを作成する必要があるためです。C ++の3つの規則は、ここで覚えておくべきものです。