یک برنامهٔ C++ بنویسید که لیستی از موجودیتهای سادهٔ بازی (هر موجودیت شامل شناسه عددی و نام) را در یک std::vector ذخیره کند، همهٔ موجودیتها را چاپ کند، سپس با استفاده از std::vector::clear آنها را پاک کند و اندازه و ظرفیت بردار را قبل و بعد از پاکسازی نمایش دهد و در نهایت روش آزادسازی ظرفیت حافظه را نیز نشان دهد؟
1.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:41 0.0
برای حل این مسئله یک struct ساده برای موجودیت تعریف کنید و از برای نگهداری نمونهها استفاده کنید؛ از push_back برای اضافه کردن، از حلقه برای چاپ و سپس از v.clear() برای حذف عناصر استفاده کنید و v.size() و v.capacity() را قبل و بعد چاپ کنید. برای آزادسازی واقعی حافظه (که در برنامههای سیستم یا بازیسازی مهم است) میتوانید از v.shrink_to_fit() (C++11) یا ترفند swap با یک بردار موقت std::vector().swap(v) استفاده کنید؛ همچنین نکته مفیدی این است که برای جلوگیری از تخصیص مکرر در بازیها از v.reserve(n) هنگام بارگذاری اولیه استفاده کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای پیادهسازی، از یک struct ساده برای موجودیتها استفاده کنید و با std::vector آنها را نگهداری کنید و از push_back یا بهتر از emplace_back برای افزودن بهره ببرید. قبل از بارگذاری اولیه، v.reserve(n) بگذارید تا از تخصیصهای مکرر جلوگیری شود. توجه کنید که clear اندازه را کاهش میدهد اما ظرفیت را خالی نمیکند و برای آزادسازی واقعی حافظه میتوان از v.shrink_to_fit() یا با استفاده از std::vector<Entity>().swap(v) آن را بازنشانی کرد. در نهایت قبل و بعد از clear اندازه و ظرفیت را چاپ کنید تا اثر عملیات مشخص شود.
گزارش