در یک بازی ساده، مجموعه‌ای از امتیازات یکتای بازیکنان را با 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 برای خوانایی کد است.

توسط پژوهشگر در 220 روز قبل ساعت 01:46
دسته بندی ها: C Plus Plus C Plus Plus for beginner
arash در 220 روز قبل ساعت 12:03

نکته مهم این است که قبل از dereference کردن begin()، مطمئن شوید مجموعه خالی نیست (scores.empty() یا بررسی کنید). چون begin() در مجموعه خالی برابر با end() است و dereference آن undefined است. std::set امتیازات را به‌طور مرتب ذخیره می‌کند، بنابراین کوچک‌ترین امتیاز را می‌توانید با *scores.begin() یا با ایتر آن به‌سادگی به‌دست آورید. استفاده از auto برای ایتر خوانایی کد را بهبود می‌بخشد و توصیه می‌شود.

گزارش

1 پاسخ

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

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