یک برنامهٔ 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 یا جدیدتر کامپایل کنید.

توسط پژوهشگر در 201 روز قبل ساعت 03:59
دسته بندی ها: C Plus Plus C Plus Plus for beginner
reyhaneh در 201 روز قبل ساعت 04:28

برای حذف ایمن موجودیت‌های با سلامتی ≤ 0 در حین پیمایش از الگوی it = m.erase(it) استفاده کنید تا ایتراتور به‌درستی ادامه پیدا کند. اگر از erase(key) استفاده می‌کنید، بهتر است کلیدهای حذف‌شده را به‌طور جداگانه در یک بردار جمع‌آوری کرده و سپس حذف کنید تا در حین پیمایش باطل نشود. همچنین می‌توانید با reserve کردن ظرفیت اولیه unordered_map کارایی عملیات را بهبود دهید. در نهایت کامپایل با -std=c++11 یا جدیدتر به پشتیبانی کامل این الگوها کمک می‌کند.

گزارش

1 پاسخ

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

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