std::vector
"dinamik" (onları çağırırken) öğeleri gibi şeyleri depolamanın iyi bir yoludur, ancak vektörün gerçek yararı, depoladığınız şeyin değişebileceği değil , vektördeki öğe sayısının minimum olmadan değişebileceğidir çaba. Örneklemek gerekirse, Item
nesnelerinizi bir dizi olarak depolamak zorunda olsaydınız, dizinin boyutunu derleme zamanında ( Item items[SIZE];
) düzeltmeniz gerekir ; bu, öğeler üzerinde sabit bir üst sınırınız olduğu anlamına gelir. t Bu konu ile ilgili olarak, bu yüzden onları atlayacağım).
Ayrıca runtime ( Item * items = new Item[SIZE];
) dizisini daha sonra yeni depolama alanı ayırarak, öğeleri kopyalayarak ve eski depolamayı silerek diziyi yeniden boyutlandırmanıza olanak tanıyacak şekilde dinamik olarak ayırabilirsiniz . Ancak bu sizin için çok daha fazla iştir.
Neyse ki, std::vector
sizin için budur - dinamik olarak bir dizi uygulamasıdır, ve aslında diziyi sizin için mevcut kapasitesinin ötesine büyütmek için bellek yönetimini yönetir. Kesinlikle şimdilik takip etmenizi önereceğim seçenek - ancak yine de bir Item
sınıf oluşturmak isteyeceğinizi unutmayın .
Kullanımı çok kolay:
// 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
Sınıfın MSDN belgeleri muhtemelen okunmaya değerdir ve şablonlara aşina değilseniz - vector
"herhangi bir şeyi" saklamak için kullanılan şey budur - buradaki temel bilgileri de fırçalamanız gerekir. Bu da beni son bir noktaya götürüyor: bir vektör her şeyi saklayabilir gibi görünse de, içinde izin verilenler için kısıtlamaları var ve bunlar bazen yeni başlayanlar atıyor. Özellikle, bir vektörde sakladığınız türün kopyalanması gerekir, çünkü vektörün örneğin dahili depolamasını yeniden boyutlandırırken nesnelerin bir kopyasını alması gerekir. C ++ 'ın üç kuralı burada akılda tutulması gereken bir şey.