یک برنامهٔ C++ بنویسید که فهرستی از شناسههای موجودیت یک بازی (مثلاً اعداد صحیح) را با استفاده از std::list و با فراخوانی std::list::push_back پر کند، سپس همان دادهها را با استفاده از std::forward_list پیادهسازی کنید و زمان اجرا و مصرف حافظهٔ هر دو را مقایسه کنید.
5.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 02:36 0.0
برای حل، از هدرهای و استفاده کنید، برای اندازهگیری زمان از std::chrono::steady_clock بهره ببرید و برای std::list از متد push_back استفاده کنید؛ چون std::forward_list متد push_back ندارد باید با نگهداری یک Iterator به انتها و استفاده از insert_after یا روش push_front و سپس برعکس کردن لیست، عناصر را به انتها اضافه کنید. توصیهها: چندبار آزمایش را اجرا کنید و میانگین زمان را بگیرید، برنامه را با -O2 کامپایل کنید، و برای برآورد حافظه میتوانید از size()*sizeof(type) یا ابزارهای سیستمعامل استفاده کنید؛ این مسئله در زمینههای توسعه بازی و برنامهنویسی سیستم برای مقایسه کارایی و مصرف حافظه مفید است.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای مقایسه، ابتدا فهرستی از ID ها را با std::list و push_back پرکنید و وقتی به اتمام رسید، با std::chrono اندازهگیری کنید. برای std::forward_list چون push_back وجود ندارد، یا با نگهداشتن یک انتهای iterator و استفاده از insert_after عمل اضافه کردن انجام دهید یا به شیوه push_front سپس برگرداندن لیست به انتهای آن برسید. برای حافظه، اندازهگیری با size()*sizeof(T) یا ابزارهای سیستمعامل را پیشنهاد میکنم و توجه کنید که فضای گرهها با هر پیادهسازی تفاوت دارد و forward_list فضای اضافی نسبت به هزینهی ناوبری دارد. توصیه میشود چند بار آزمایش کنید و مقدار میانگین زمان را گزارش دهید و کامپایل با -O2 را فراموش نکنید.
گزارش