یک برنامهٔ 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) هنگام بارگذاری اولیه استفاده کنید.

توسط پژوهشگر در 221 روز قبل ساعت 01:41
دسته بندی ها: C Plus Plus C Plus Plus for beginner
arash در 221 روز قبل ساعت 12:23

برای پیاده‌سازی، از یک struct ساده برای موجودیت‌ها استفاده کنید و با std::vector آنها را نگهداری کنید و از push_back یا بهتر از emplace_back برای افزودن بهره ببرید. قبل از بارگذاری اولیه، v.reserve(n) بگذارید تا از تخصیص‌های مکرر جلوگیری شود. توجه کنید که clear اندازه را کاهش می‌دهد اما ظرفیت را خالی نمی‌کند و برای آزادسازی واقعی حافظه می‌توان از v.shrink_to_fit() یا با استفاده از std::vector<Entity>().swap(v) آن را بازنشانی کرد. در نهایت قبل و بعد از clear اندازه و ظرفیت را چاپ کنید تا اثر عملیات مشخص شود.

گزارش

1 پاسخ

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

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