در زبان C++ تابعی بنویسید که با استفاده از unordered_set شناسههای تکراری موجودات یک بازی را از یک بردار حذف کرده و تعداد شناسههای یکتا را بازگرداند.
20.0 بازدید آخرین ویرایش در 198 روز قبل ساعت 04:49 0.0
برای حل این مسئله در C++ از هدر استفاده کنید: یک unordered_set بسازید و روی بردار شناسهها پیمایش کنید و هر شناسه را با insert یا emplace در آن اضافه کنید؛ در نهایت اندازهٔ مجموعه (size) برابر تعداد شناسههای یکتا خواهد بود. برای کارایی بهتر میتوانید قبل از درج reserve یا rehash تنظیم کنید، از انواع عددی مثل uint32_t برای ID استفاده کنید و از فراخوانی find پیش از insert خودداری کنید چون insert خودش مشخص میکند که آیا عنصر جدید است یا خیر (pair با bool باز میگرداند). این روش در توسعهٔ بازی برای حذف شناسههای تکراری یا در برنامهنویسی سیستمها برای فیلتر کردن شناسههای پردازش مفید است.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای پیادهسازی از unordered_set استفاده کنید و با reserve ظرفیت را از پیش تخصیص دهید تا rehashهای مکرر کاهش یابد. از insert یا emplace استفاده کنید و به جفت بازگشتی نگاه کنید بهجای فراخوانی find پیش از درج؛ insert خودش نشان میدهد که عنصر جدید بوده است یا نه. اگر لازم است بردار اصلی را هم بدون تکرار نگه دارید، پس از پر کردن مجموعه عناصر را به بردار بازنویسی کنید (توجه داشته باشید unordered_set ترتیب را حفظ نمیکند) و برای کارایی و حافظه از نوعهای عددی مثل uint32_t یا هش سفارشی مناسب استفاده کنید.
گزارش