std::vector
adalah cara yang baik untuk menyimpan "dinamis" (seperti Anda menyebutnya) hal-hal seperti barang, tetapi manfaat sebenarnya dari vektor bukanlah bahwa hal yang Anda simpan dapat berubah, tetapi bahwa jumlah item dalam vektor dapat berubah tanpa minimal usaha Anda. Untuk mengilustrasikan, jika Anda harus menyimpan Item
objek Anda sebagai array, Anda harus memperbaiki ukuran array pada waktu kompilasi ( Item items[SIZE];
), yang berarti Anda memiliki batas atas tetap pada item (antara masalah lain, yang tidak t relevan dengan subjek khusus ini dan saya akan mengabaikannya).
Anda juga dapat secara dinamis mengalokasikan array saat runtime ( Item * items = new Item[SIZE];
) yang akan memungkinkan Anda mengubah ukuran array nanti dengan mengalokasikan penyimpanan baru, menyalin item, dan menghapus penyimpanan yang lama. Namun, ini lebih banyak pekerjaan yang harus Anda lakukan.
Untungnya, itulah yang std::vector
Anda lakukan - ini adalah implementasi array berukuran dinamis, pada dasarnya, dan menangani manajemen memori untuk menumbuhkan array di luar kapasitas saat ini untuk Anda. Ini jelas merupakan opsi yang saya sarankan untuk Anda kejar sekarang - tetapi perhatikan bahwa Anda masih ingin membuat Item
kelas.
Ini sangat mudah digunakan:
// 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();
Dokumentasi MSDN untuk vector
kelas mungkin layak dibaca, dan jika Anda tidak terbiasa dengan templat - yang vector
digunakan untuk memungkinkannya menyimpan "apa pun" - Anda harus membaca dasar-dasar di sana juga. Yang juga menuntun saya ke titik akhir: meskipun terlihat seperti vektor dapat menyimpan apa pun, ia memang memiliki kendala untuk apa yang diizinkan di dalamnya dan ini terkadang melempar pemula. Secara khusus, jenis yang Anda simpan dalam vektor harus dapat disalin, karena vektor tersebut perlu membuat salinan objek ketika mengubah ukuran penyimpanan internal, misalnya. Aturan C ++ dari tiga adalah sesuatu yang perlu diingat di sini.