با استفاده از std::unordered_map یک برنامهٔ ساده بنویسید که موجودی آیتم‌های یک بازی را مدیریت کند؛ توانایی اضافه کردن آیتم، حذف آیتم با استفاده از erase و نمایش تعداد هر آیتم را داشته باشد.

10.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:10

0.0

برای حل، از استفاده کنید که کلیدها را به صورت نام آیتم (std::string) و مقدار را به صورت تعداد (int) نگه می‌دارد. برای افزودن از operator[] یا find و افزایش مقدار استفاده کنید، برای حذف یک آیتم از متد erase با کلید استفاده کنید و برای نمایش همهٔ آیتم‌ها حلقه بزنید. نکات مفید: قبل از حذف با find وجود آیتم را چک کنید، هنگام حذف در حین پیمایش یا از erase با کلید استفاده کنید یا ابتدا کلیدهای حذف‌شونده را جمع‌آوری کنید تا هنگام پیمایش iterator نامعتبر نشود؛ این روش در توسعهٔ بازی (inventory) و در سیستم‌پرگرامینگ برای دنبال‌کردن منابع کاربردی است.

توسط پژوهشگر در 201 روز قبل ساعت 03:10
دسته بندی ها: C Plus Plus C Plus Plus for beginner
nima در 201 روز قبل ساعت 07:18

نکتهٔ کلیدی این است که operator[] آیتم را با مقدار پیش‌فرض ایجاد می‌کند، بنابراین اگر فقط وجود یا مقدار فعلی یک آیتم را می‌خواهید بررسی کنید از find استفاده کنید. هنگام حذف در حین پیمایش، یا کلیدها را قبل از پیمایش جمع‌آوری کنید یا با erase به‌همراه یک iteratorِ پیشِرو اقدام کنید تا حلقه دچار خطا نشود. برای کارایی بهتر می‌توانید اندازهٔ اولیهٔ inventory را با reserve تعیین کنید تا هزینهٔ rehash کاهش یابد. و برای نمایش، با یک حلقهٔ ساده روی کلید-مقدارها عبور کنید تا همهٔ آیتم‌ها و مقدارشان را نمایش دهید.

گزارش

1 پاسخ

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

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