std::vector
ist eine gute Möglichkeit, "dynamische" (wie Sie sie nennen) Dinge wie Elemente zu speichern, aber der wahre Vorteil des Vektors besteht nicht darin, dass sich das, was Sie speichern, ändern kann, sondern dass sich die Anzahl der Elemente im Vektor ohne Minimum ändern kann Anstrengung von Ihrer Seite. Wenn Sie Ihre Item
Objekte als Array speichern möchten, müssen Sie zur Kompilierungszeit die Größe des Arrays festlegen ( Item items[SIZE];
). Dies bedeutet, dass Sie eine feste Obergrenze für Elemente haben (unter anderem Probleme, die nicht auftreten). t als relevant für dieses spezielle Thema und so werde ich sie überspringen).
Sie können das Array auch zur Laufzeit ( Item * items = new Item[SIZE];
) dynamisch zuweisen, um die Größe des Arrays später zu ändern, indem Sie neuen Speicher zuweisen , die Elemente kopieren und den alten Speicher löschen. Dies ist jedoch viel mehr Arbeit für Sie.
Glücklicherweise std::vector
bedeutet dies für Sie Folgendes: Es handelt sich im Wesentlichen um eine Array-Implementierung mit dynamischer Größe, die die Speicherverwaltung übernimmt, um das Array über seine derzeitige Kapazität hinaus zu vergrößern. Es ist definitiv die Option, die Sie vorerst verfolgen sollten - aber beachten Sie, dass Sie immer noch eine Item
Klasse erstellen möchten .
Es ist sehr einfach zu bedienen:
// 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();
Die MSDN-Dokumentation für die vector
Klasse ist wahrscheinlich eine Lektüre wert. Wenn Sie nicht mit Vorlagen vertraut sind, mit denen vector
"alles" gespeichert werden kann, sollten Sie auch dort die Grundlagen auffrischen. Was mich auch zu einem letzten Punkt führt: Während es so aussieht, als ob ein Vektor alles speichern kann, gibt es Einschränkungen für das, was darin erlaubt ist, und diese werfen manchmal Anfänger. Insbesondere muss der Typ, den Sie in einem Vektor speichern, kopierbar sein, da der Vektor beispielsweise beim Ändern der Größe seines internen Speichers eine Kopie der Objekte erstellen muss. C ++ 's Regel von drei ist hier etwas im Auge zu behalten.