یک برنامهٔ C++ بنویسید که لیستی از اشیاء بازی (مثلاً ساختار موقعیت دشمنان) را در std::vector ذخیره کند، سپس هنگام ریست کردن سطح با استفاده از std::vector::clear محتویات را پاک کند و اندازه و ظرفیت وکتور را قبل و بعد از clear نمایش دهد.

6.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 03:02

0.0

برای حل این مسئله از کتابخانهٔ استاندارد C++ و کانتینر std::vector استفاده کنید: یک struct ساده برای موقعیت یا وضعیت دشمنان تعریف کنید، چند نمونه را با push_back به وکتور اضافه کنید، سپس با size() و capacity() وضعیت وکتور را چاپ کنید، بعد clear() را صدا بزنید و دوباره size و capacity را مشاهده کنید تا ببینید clear عناصر را حذف می‌کند اما ظرفیت را آزاد نمی‌کند؛ اگر بخواهید حافظه را آزاد کنید می‌توانید از shrink_to_fit یا ترفند swap با یک وکتور خالی استفاده کنید. هنگام پیاده‌سازی به اجرای سازنده/مخرب‌ها برای منابع داخل اشیاء و جلوگیری از اشاره‌گرهای معلق توجه کنید و برنامه را با g++ کامپایل کنید.

توسط پژوهشگر در 202 روز قبل ساعت 03:02
دسته بندی ها: C Plus Plus C Plus Plus for beginner
sara در 202 روز قبل ساعت 07:42

برای فهم بهتر، قبل و بعد از clear اندازه و ظرفیت وکتور را چاپ کنید تا تفاوت را ببینید. واضح است که clear فقط عناصر را می‌برد و ظرفیت را نگه می‌کند؛ اگر می‌خواهید حافظه آزاد شود باید از shrink_to_fit استفاده کنید یا با یک وکتور خالی swap کنید. در تعریف struct منابع داخلی را به دقت مدیریت کنید تا از رهاسازی ناقص یا اشاره‌گرهای معلق جلوگیری شود. حین کامپایل با g++ مراقب اجرای سازنده‌ها و مخرب‌ها باشید تا با وجود اشیاء پیچیده، سلامت منابع حفظ شود.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری