با استفاده از 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() برای تشخیص خاتمهٔ لیست بهره ببرید — این الگو برای بازی‌سازی یا برنامه‌نویسی سیستمی که به ساختارهای کم‌هزینه و حذف/درج سریع نیاز دارند مناسب است.

توسط پژوهشگر در 202 روز قبل ساعت 02:27
دسته بندی ها: C Plus Plus C Plus Plus for beginner
reyhaneh در 202 روز قبل ساعت 09:37

نکتهٔ کلیدی این است که برای حذف اولین وقوع مقدار مشخص از std::forward_list باید از erase_after(prev) استفاده کنید و اگر هدف در رأس لیست باشد از before_begin() بهره ببرید. پس از حذف، با یک پیمایش ساده تا end() تعداد عناصر باقی‌مانده را محاسبه کنید چون forward_list اندازه ندارد. این الگو زمان O(n) و حافظهٔ O(1) دارد و برای فهرست‌های کم‌هزینه و عملیات حذف/درج سریع مناسب است. همچنین توجه داشته باشید که erase_after مقدار ایتراتور بازمانده را به‌همراه ندارد و مدیریت ایتراتورها در کد اهمیت دارد.

گزارش

1 پاسخ

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

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