در برنامه‌نویسی C++ یک مجموعه از شناسه‌های موجودیت‌های بازی (std::set) دارید؛ برنامه‌ای بنویسید که یک شناسه را از ورودی بخواند، با استفاده از std::set::end بررسی کند آیا آن شناسه در مجموعه وجود دارد و در صورت وجود آن را حذف کرده و در غیر این صورت پیام مناسبی چاپ کند.

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

0.0

برای حل این مسئله از هدر و استفاده کنید؛ با متد find مقدار را جست‌وجو کنید و نتیجه را با s.end() مقایسه کنید تا مشخص شود عنصر یافت شده یا خیر. اگر it != s.end() بود از s.erase(it) برای حذف استفاده کنید و قبل از هر بار استفاده از اشاره‌گر نتیجه اطمینان حاصل کنید که آن را به end() مقایسه کرده‌اید (هرگز end() را دِریفرِنس نکنید). نکته: می‌توانید از auto برای نگهداری iterator استفاده کنید؛ این الگو هم در توسعه بازی‌ها برای مدیریت شناسه‌های موجودیت و هم در برنامه‌های سیستمی برای مدیریت منابع مفید است.

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

یک نکته کوتاه درباره استفاده از std::set برای شناسه‌های موجودیت: از s.find برای جست‌وجو استفاده کنید و نتیجه را با s.end() مقایسه کنید تا مشخص شود آیا عنصر وجود دارد. اگر it != s.end() بود از s.erase(it) برای حذف استفاده کنید و توجه کنید که پس از erase این iterator معتبر نیست، بنابراین دوباره به آن ارجاع ندهید. برای سادگی می‌توانید از auto برای نگهداری iterator استفاده کنید. این الگو هم در توسعه بازی‌ها و هم در برنامه‌های سیستمی مفید است و به مدیریت شناسه‌های موجودیت کمک می‌کند.

گزارش

1 پاسخ

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

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