یک برنامهٔ 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) یا ابزارهای سیستم‌عامل استفاده کنید؛ این مسئله در زمینه‌های توسعه بازی و برنامه‌نویسی سیستم برای مقایسه کارایی و مصرف حافظه مفید است.

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

برای مقایسه، ابتدا فهرستی از ID ها را با std::list و push_back پرکنید و وقتی به اتمام رسید، با std::chrono اندازه‌گیری کنید. برای std::forward_list چون push_back وجود ندارد، یا با نگه‌داشتن یک انتهای iterator و استفاده از insert_after عمل اضافه کردن انجام دهید یا به شیوه push_front سپس برگرداندن لیست به انتهای آن برسید. برای حافظه، اندازه‌گیری با size()*sizeof(T) یا ابزارهای سیستم‌عامل را پیشنهاد می‌کنم و توجه کنید که فضای گره‌ها با هر پیاده‌سازی تفاوت دارد و forward_list فضای اضافی نسبت به هزینه‌ی ناوبری دارد. توصیه می‌شود چند بار آزمایش کنید و مقدار میانگین زمان را گزارش دهید و کامپایل با -O2 را فراموش نکنید.

گزارش

1 پاسخ

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

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