یک تابع ساده در C++ بنویسید که با استفاده از unordered_set شناسههای آیتمهای جمعآوریشده در یک بازی را از تکراریها پاک کند و بررسی کند آیا یک آیتم مشخص در مجموعه وجود دارد یا خیر.
7.0 بازدید آخرین ویرایش در 220 روز قبل ساعت 03:09 0.0
برای حل این مسئله از هدر استفاده کنید؛ شناسهها را در یک unordered_set وارد کنید تا تکراریها خودکار حذف شوند و با تابع find یا عملگر count وجود یک آیتم خاص را بررسی نمایید. برای کارایی بهتر در موارد با دادهٔ زیاد از reserve برای جلوگیری از rehash استفاده کنید و برای پیمایش اعضا از حلقهٔ range-based for بهره ببرید؛ عملیات اصلی شامل insert، find/count، erase و size است و پیچیدگی متوسط هر کدام O(1) است که در بازیسازی و برنامهنویسی سیستمها مناسب کاربردهای realtime و lookup-heavy است.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
نکتهای کاربردی این است که قبل از افزودن آیتمها با unordered_set، از reserve(size) استفاده کنی تا دفعات بازنشانی (rehash) کاهش یابد. برای بررسی وجود یک شناسه از find یا count استفاده کن؛ find نتیجهای به اندازه iterator است و در حالت وجود، میتواند به طور سریع چک را انجام دهد. تکراریها بهطور خودکار حذف میشوند چون unordered_set فقط کلیدهای یکتا را نگه میدارد. همچنین برای پیمایش میتوان از حلقه range-based for استفاده کرد تا کد تمیزتر باشد.
گزارش