std::vector
est un bon moyen de stocker des éléments "dynamiques" (comme vous les appelez) comme des éléments, mais le véritable avantage du vecteur n'est pas que la chose que vous stockez peut changer, mais que le nombre d'éléments dans le vecteur peut changer sans minimum effort de votre part. Pour illustrer, si vous deviez stocker vos Item
objets en tant que tableau, vous devrez fixer la taille du tableau lors de la compilation ( Item items[SIZE];
), ce qui signifie que vous avez une limite supérieure fixe pour les éléments (entre autres problèmes, qui ne sont pas '' t comme pertinents pour ce sujet spécifique et je vais donc les ignorer).
Vous pouvez également allouer dynamiquement le tableau lors de l'exécution ( Item * items = new Item[SIZE];
), ce qui vous permettrait de redimensionner le tableau plus tard en allouant un nouveau stockage, en copiant les éléments et en supprimant l'ancien stockage. Cependant, c'est beaucoup plus de travail pour vous.
Heureusement, c'est ce std::vector
que vous faites - c'est une implémentation de tableau de taille dynamique, essentiellement, et gère la gestion de la mémoire pour augmenter le tableau au-delà de sa capacité actuelle pour vous. C'est certainement l'option que je vous suggère de poursuivre pour l'instant - mais notez que vous voudrez toujours créer une Item
classe.
C'est très simple à utiliser:
// 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();
La documentation MSDN pour la vector
classe vaut probablement la peine d'être lue, et si vous n'êtes pas familier avec les modèles - ce qui est vector
utilisé pour lui permettre de stocker "n'importe quoi" - vous devriez également vous brosser les bases. Ce qui m'amène également à un dernier point: bien qu'il semble qu'un vecteur puisse stocker n'importe quoi, il a des contraintes pour ce qui est autorisé et cela lance parfois des débutants. En particulier, le type que vous stockez dans un vecteur doit être copiable, car le vecteur devra par exemple faire une copie des objets lors du redimensionnement de sa mémoire interne. La règle de trois de C ++ est quelque chose à garder à l'esprit ici.