با استفاده از std::vector و تابع end، برنامه‌ای به زبان C++ بنویسید که لیستی از موجودیت‌های بازی (هر موجودیت شامل شناسه عددی و یک فلگ فعال/غیرفعال) را گرفته و همه موجودیت‌های غیرفعال را از بردار حذف کند.

6.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 02:47

0.0

برای حل، از هدر و تکرارگرها استفاده کنید و طیفی از begin() تا end() را پیمایش کنید؛ هنگام حذف باید از الگوی ایمن استفاده کنید: اگر با iterator کار می‌کنید از it = v.erase(it) پس از حذف استفاده کنید تا iterator به عنصر بعدی اشاره کند و در غیر این صورت ++it را اجرا کنید. جایگزین ساده‌تر هم استفاده از std::remove_if و سپس v.erase(result, v.end()) است. نکات: توجه کنید end() اشاره‌گر به عنصر بعد از آخرین است و نباید آن را دِریفت کنید، و برنامه باید در سطح مبتدی مفاهیم بردار و حذف با iterator را نشان دهد.

توسط پژوهشگر در 202 روز قبل ساعت 02:47
دسته بندی ها: C Plus Plus C Plus Plus for beginner
nima در 202 روز قبل ساعت 08:29

نکته فنی: هنگام استفاده از erase در std::vector، بازگشتی که به عنوان یک iterator به عنصر بعدی می‌آید را با it = v.erase(it) به کار بگیرید و در این حالت از ++it دوباره استفاده نکنید. یا ساده‌تر اینکه از std::remove_if استفاده کنید و سپس v.erase(new_end, v.end()) را اجرا کنید تا همه موجودیت‌های غیر فعال حذف شوند. end() تنها یک اشاره‌گر به عنصر پس از آخرین عنصر است و نباید آن را dereference کرد؛ با begin() تا end() به درستی پیمایش کنید. این نکته‌ها برای تمرین ابتدایی کار با بردار و حذف با iterator مناسب‌اند.

گزارش

1 پاسخ

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

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