std::vector
es una buena manera de almacenar cosas "dinámicas" (como las llama) como elementos, pero el beneficio real del vector no es que lo que está almacenando puede cambiar, sino que la cantidad de elementos en el vector puede cambiar sin un mínimo esfuerzo de tu parte. Para ilustrar, si tuviera que almacenar sus Item
objetos como una matriz, tendría que fijar el tamaño de la matriz en tiempo de compilación ( Item items[SIZE];
), lo que significa que tiene un límite superior fijo en los elementos (entre otros problemas, que no son t como relevante para este tema específico y, por lo tanto, los omitiré).
También podría asignar dinámicamente la matriz en tiempo de ejecución ( Item * items = new Item[SIZE];
), lo que le permitiría cambiar el tamaño de la matriz más tarde al asignar un nuevo almacenamiento, copiar los elementos y eliminar el almacenamiento anterior. Esto, sin embargo, es mucho más trabajo para usted.
Afortunadamente, eso es lo que std::vector
hace por usted: es una implementación de matriz de tamaño dinámico, esencialmente, y maneja la administración de memoria para hacer crecer la matriz más allá de su capacidad actual para usted. Definitivamente es la opción que te sugiero que sigas por ahora, pero ten en cuenta que aún querrás crear una Item
clase.
Es muy fácil de usar:
// 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();
vector
Probablemente valga la pena leer la documentación de MSDN para la clase , y si no está familiarizado con las plantillas , que es lo vector
que le permite almacenar "cualquier cosa", también debe repasar los conceptos básicos. Lo que también me lleva a un punto final: si bien parece que un vector puede almacenar cualquier cosa, tiene restricciones para lo que está permitido y, a veces, esto arroja a los principiantes. En particular, el tipo que almacena en un vector debe ser copiable, porque el vector tendrá que hacer una copia de los objetos al cambiar el tamaño de su almacenamiento interno, por ejemplo. La regla de tres de C ++ es algo a tener en cuenta aquí.