یک برنامهٔ C++ بنویسید که با استفاده از std::unordered_map شناسهٔ موجودیتهای یک بازی را به میزان سلامتیشان نگهداری کند و سپس همهٔ موجودیتهایی که سلامتیشان صفر یا کمتر است را با استفاده از متد erase حذف کرده و تعداد موجودیتهای باقیمانده را چاپ کند.
11.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:59 0.0
فایل هدر را وارد کرده و از std::unordered_map یا مشابه برای نگهداری id→health استفاده کنید؛ برای حذف ایمن در هنگام پیمایش دو روش معمول وجود دارد: ابتدا شناسههای قابل حذف را در یک بردار جمعآوری کرده و سپس با map.erase(key) حذف کنید، یا در C++11 به بعد هنگام پیمایش از الگوی it = m.erase(it) استفاده کنید تا پیمایش امن بماند. نکات: erase(key) معمولاً تعداد حذفشده را برمیگرداند، حذف داخل حلقهی معمولی میتواند باعث باطلشدن ایتراتور شود و بهتر است برنامه را با -std=c++11 یا جدیدتر کامپایل کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای حذف ایمن موجودیتهای با سلامتی ≤ 0 در حین پیمایش از الگوی it = m.erase(it) استفاده کنید تا ایتراتور بهدرستی ادامه پیدا کند. اگر از erase(key) استفاده میکنید، بهتر است کلیدهای حذفشده را بهطور جداگانه در یک بردار جمعآوری کرده و سپس حذف کنید تا در حین پیمایش باطل نشود. همچنین میتوانید با reserve کردن ظرفیت اولیه unordered_map کارایی عملیات را بهبود دهید. در نهایت کامپایل با -std=c++11 یا جدیدتر به پشتیبانی کامل این الگوها کمک میکند.
گزارش