با استفاده از std::forward_list و متد push_front، یک ساختار ذخیره‌سازی برای نگه‌داشتن آخرین 10 رویداد (رشته‌ای) در یک بازی بسازید تا هر بار که رویداد جدیدی اضافه می‌شود، اگر بیش از 10 مورد شد قدیمی‌ترین رویدادها حذف شوند.

1.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:07

0.0

در C++ از هدر استفاده کنید و برای افزودن رویداد جدید از push_front بهره ببرید تا جدیدترین رویدادها در جلوی لیست قرار گیرند؛ برای محدود کردن به 10 عنصر می‌توانید با شمارش عناصر یا پیمایش با iterator تا عنصر دهم و سپس استفاده از erase_after برای حذف باقیمانده‌ها عمل کنید. نکته‌ها: از std::string برای رویدادها استفاده کنید، در صورت نیاز از توابع کمکی برای نمایش لیست یا بازیابی عناصر استفاده کنید و دقت کنید که forward_list لیست تک‌پیوندی است و حذف از انتها نیاز به پیمایش دارد (بنابراین نگه‌داشتن شمارنده اندازه یا حذف پس از nth iterator مناسب است).

توسط پژوهشگر در 221 روز قبل ساعت 01:07
دسته بندی ها: C Plus Plus C Plus Plus for beginner
arash در 221 روز قبل ساعت 14:34

با forward_list، حذف آخرین عنصر تنها با erase_after و پیمایش به عنصر قبل از آخر انجام می‌شود، چرا که این لیست تک‌پیوندی است. برای حفظ 10 رویداد اخیر، هر بار که push_front انجام شد، اندازه را افزایش بدهید و اگر اندازه از 10 بیشتر شد، با استفاده از یک ایتر به 9امین عنصر و erase_after آن، رویداد oldest را حذف کنید. این کار هزینه‌ای برابر با O(n) هر بار می‌طلبد زیرا باید به قبل از آخر پیمایش کنید. اگر نیاز به کارایی بالاتری دارید، استفاده از std::deque یا نگه داشتن یک لیست دوپیوندی یا ساختار با اندازه ثابت پیشنهاد می‌شود.

گزارش

1 پاسخ

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

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