در یک بازی ساده، مجموعهای از امتیازات یکتای بازیکنان را با std::set ذخیره کنید و کوچکترین امتیاز را با استفاده از std::set::begin پیدا و چاپ کنید.
0.0 بازدید آخرین ویرایش در 220 روز قبل ساعت 01:46 0.0
برای حل این مسئله از زبان C++ و کانتینر std::set (هدر ) استفاده کنید: امتیازات را با متد insert در std::set قرار دهید، سپس با بررسی empty از خالی نبودن مجموعه مطمئن شوید و با استفاده از auto it = scores.begin(); یا مستقیم با *scores.begin() کوچکترین عنصر (چون std::set بهصورت مرتبشده ذخیره میکند) را دریافت و چاپ کنید؛ نکته مهم جلوگیری از dereference روی iterator وقتی مجموعه خالی است، و استفاده از auto برای خوانایی کد است.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
نکته مهم این است که قبل از dereference کردن begin()، مطمئن شوید مجموعه خالی نیست (scores.empty() یا بررسی کنید). چون begin() در مجموعه خالی برابر با end() است و dereference آن undefined است. std::set امتیازات را بهطور مرتب ذخیره میکند، بنابراین کوچکترین امتیاز را میتوانید با *scores.begin() یا با ایتر آن بهسادگی بهدست آورید. استفاده از auto برای ایتر خوانایی کد را بهبود میبخشد و توصیه میشود.
گزارش