با استفاده از std::forward_list یک فهرست تکپیوندی از شناسههای موجودیتهای بازی بسازید و تابعی بنویسید که مقدار مشخصی را با پیمایش تا end() پیدا و تنها اولین وقوع آن را حذف و سپس تعداد عناصر باقیمانده را چاپ کند.
2.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 02:27 0.0
از هدر در C++ استفاده کنید؛ چون std::forward_list دسترسی تصادفی ندارد باید با نگهداری یک iterator قبلی (یا استفاده از before_begin()) عنصر را با erase_after(prev) حذف کنید. برای شمارش عناصر پس از حذف از پیمایش ساده استفاده کنید (forward_list متد size() ندارد) و از end() برای تشخیص خاتمهٔ لیست بهره ببرید — این الگو برای بازیسازی یا برنامهنویسی سیستمی که به ساختارهای کمهزینه و حذف/درج سریع نیاز دارند مناسب است.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
نکتهٔ کلیدی این است که برای حذف اولین وقوع مقدار مشخص از std::forward_list باید از erase_after(prev) استفاده کنید و اگر هدف در رأس لیست باشد از before_begin() بهره ببرید. پس از حذف، با یک پیمایش ساده تا end() تعداد عناصر باقیمانده را محاسبه کنید چون forward_list اندازه ندارد. این الگو زمان O(n) و حافظهٔ O(1) دارد و برای فهرستهای کمهزینه و عملیات حذف/درج سریع مناسب است. همچنین توجه داشته باشید که erase_after مقدار ایتراتور بازمانده را بههمراه ندارد و مدیریت ایتراتورها در کد اهمیت دارد.
گزارش