یک تابع ساده در 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 است.

توسط پژوهشگر در 220 روز قبل ساعت 03:09
دسته بندی ها: C Plus Plus C Plus Plus for beginner
reyhaneh در 220 روز قبل ساعت 07:20

نکته‌ای کاربردی این است که قبل از افزودن آیتم‌ها با unordered_set، از reserve(size) استفاده کنی تا دفعات بازنشانی (rehash) کاهش یابد. برای بررسی وجود یک شناسه از find یا count استفاده کن؛ find نتیجه‌ای به‌ اندازه iterator است و در حالت وجود، می‌تواند به طور سریع چک را انجام دهد. تکراری‌ها به‌طور خودکار حذف می‌شوند چون unordered_set فقط کلیدهای یکتا را نگه می‌دارد. همچنین برای پیمایش می‌توان از حلقه range-based for استفاده کرد تا کد تمیزتر باشد.

گزارش

1 پاسخ

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

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