یک برنامهٔ ساده به زبان C++ بنویسید که در زمینهٔ بازیسازی یک لیست تکپیوندی از رویدادهای ورودی (مانند حرکت، پریدن، شلیک) را با استفاده از std::forward_list نگهداری کند، سپس با استفاده از pop_front رویدادهای قدیمی را یکییکی حذف و بعد از هر حذف وضعیت کنونی لیست را چاپ کند.
4.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 02:58 0.0
برای حل این مسئله از هدر استفاده کنید و رویدادها را با push_front یا emplace_front اضافه کنید؛ برای حذف رویدادهای قدیمی از متد pop_front بهره ببرید و قبل از فراخوانی pop_front با empty() از خالی نبودن لیست مطمئن شوید. هنگام چاپ کل لیست از iterator یا حلقهی range-based for استفاده کنید؛ توجه کنید که forward_list دسترسی تصادفی ندارد و pop_front پیچیدگی زمانی O(1) دارد، بنابراین برای نگهداری تعداد عناصر در صورت نیاز یک شمارندهٔ جداگانه بهروزرسانی کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
نکتهٔ مهم: اگر رویدادها را با push_front اضافه کنید، جدیدترین رویداد در ابتدای لیست قرار میگیرد و با pop_front همواره رویداد جدید حذف میشود، نه قدیمی. بنابراین حذف رویدادهای قدیمی با forward_list بهسادگی امکانپذیر نیست مگر با پیمایش تا عنصر قبل آخر یا بازسازی ساختار، که زمان O(n) خواهد داشت. برای نگهداری صف با پیچیدگی O(1) در هر عملیات، بهتر است از std::deque یا std::queue (پشتیبانی با deque) استفاده کنید یا اگر همچنان از forward_list استفاده میکنید، وظایف را به شکل دیگری طراحی کنید. همچنین میتوانید یک شمارندهٔ اندازه نگه دارید تا چاپ و مدیریت سایز را سادهتر کنید.
گزارش