std::vector
আইটেমের মতো জিনিস "ডায়নামিক" (যেমন আপনি তাদের ডাকছেন) সংরক্ষণ করার একটি দুর্দান্ত উপায়, তবে ভেক্টরটির আসল উপকারিতাটি এটি নয় যে আপনি সংরক্ষণ করছেন যে জিনিসটি পরিবর্তন করতে পারে তা নয়, তবে ভেক্টরের আইটেমের সংখ্যা ন্যূনতম পরিবর্তিত হতে পারে that আপনার পক্ষ থেকে প্রচেষ্টা। উদাহরণস্বরূপ, আপনি যদি Item
কোনও অ্যারে হিসাবে আপনার অবজেক্টগুলি সঞ্চয় করে রাখতেন, আপনাকে সংকলন-সময় ( Item items[SIZE];
) এ অ্যারের আকার ঠিক করতে হবে , যার অর্থ আপনার আইটেমগুলির উপর একটি নির্দিষ্ট উপরের সীমা রয়েছে (অন্যান্য ইস্যুগুলির মধ্যে, যা নয়) টি এই নির্দিষ্ট বিষয়ের সাথে প্রাসঙ্গিক এবং তাই আমি এগুলি এড়িয়ে যাব)।
রানটাইম ( Item * items = new Item[SIZE];
) -র সময় আপনি অ্যারেটি ডায়নামিকভাবে-বরাদ্দ করতে পারেন যা আপনাকে নতুন স্টোরেজ বরাদ্দ করে, আইটেমগুলি অনুলিপি করে এবং পুরানো স্টোরেজ মোছার পরে অ্যারের আকার পরিবর্তন করতে দেয়। এটি অবশ্য আপনার আরও অনেক কাজ।
সৌভাগ্যক্রমে, এটি আপনার জন্য যা std::vector
তা - এটি একটি গতিশীল আকারের অ্যারে বাস্তবায়ন, যা মূলত আপনার জন্য এবং বর্তমান ক্ষমতার বাইরে অ্যারে বাড়ানোর জন্য মেমরি পরিচালনা পরিচালনা করে। এটি অবশ্যই বিকল্প হিসাবে আমি আপনাকে আপাতত অনুসরণ করার পরামর্শ দিচ্ছি - তবে মনে রাখবেন যে আপনি এখনও একটি Item
ক্লাস তৈরি করতে চাইবেন ।
এটি ব্যবহার করা খুব সহজ:
// 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
ক্লাসের জন্য এমএসডিএন ডকুমেন্টেশন সম্ভবত পঠনযোগ্য, এবং যদি আপনি টেমপ্লেটগুলির সাথে পরিচিত না হন - যা vector
এটি "কিছু" সঞ্চয় করার অনুমতি দেয় - তবে আপনাকে সেখানে বেসিকগুলিও ব্রাশ করা উচিত। এটি আমাকে একটি চূড়ান্ত বিন্দুতেও নিয়ে যায়: যদিও মনে হয় কোনও ভেক্টর যে কোনও কিছু সংরক্ষণ করতে পারে, এতে এতে যা কিছু অনুমোদিত তা বাধা রয়েছে এবং এটি কখনও কখনও নবজাতককে ফেলে দেয়। বিশেষত, আপনি কোন ভেক্টরটিতে যে ধরণের স্টোরটি সংরক্ষণ করেন তা অবশ্যই অনুলিপিযোগ্য হতে হবে, কারণ ভ্যাক্টরের অভ্যন্তরীণ স্টোরেজটির আকার পরিবর্তন করার সময় বস্তুর অনুলিপি তৈরি করতে হবে। সি ++ এর তিনটি বিধি এখানে মনে রাখা দরকার।