✤  sync_with_stdio در زبان ++C

زبان برنامه‌نویسی ++C علاوه بر ابزارهایی مانند cin و cout برای عملیات I/O، توابع scanf و printf را هم برای همین کارها از زبان برنامه‌نویسی C به ارث برده است. هر کدام از این دو دسته مزایایی دارند که ممکن است بخواهیم از هر دو در برنامه‌نویسی استفاده کنیم. مثلا printf فرمت‌بندی خروجی راحت‌تری نسبت به cout دارد. اما در مقابل استفاده از cout برای کاربری‌های عادی پیچیده‌گی کمتری دارد.

در حالت عادی بافرهای اطلاعاتی این دو دسته هماهنگ هستند. یعنی استفاده‌ی همزمان و متوالی از این دو دسته، ترتیب ورودی یا خروجی را به هم نمی‌زند و دستورات به همان ترتیبی که در برنامه آمده اجرا و بافر در صورت نیاز خالی یا پر می‌شود. این خاصیت به صورت پیش‌فرض فعال است و باعث می‌شود عملیات اشیاء ورودی و خروجی ++C کند عمل کنند.

زمانی که برای مسابقات برنامه‌نویسی کد می‌نویسیم، ممکن است سنگین بودن ناچیز این عملیات در نهایت مشکل‌ساز شود و زمان کم بیاوریم. در چنین حالتی بهتر است از توابع زبان C استفاده کنیم. اما اگر راحتی cin و cout را نیز ترجیح می‌دهیم، باید تابع ios_base::sync_with_stdio را با پارامتر false اول برنامه فراخوانی کنیم تا سرعتی حتی بهتر از scanf و printf داشته باشیم. فقط باید توجه کنیم که پس از این دستور نباید از این دست توابع متعلق به زبان C استفاده کنیم. چرا که از دو بافر جدا استفاده می‌کنند و ممکن است ترتیب عملیات آنطور که مد نظر ما است انجام نگیرد.

مسعود اقدسی‌فام

مسعود اقدسی‌فام هستم.

یک معلم علاقه‌مند به تحقیق، تدریس و نوشتن در حوزه‌های برنامه‌نویسی، الگوریتم و حل مسئله :)

algs.ir/spknttu     اشتراک‌گذاری در LinkedIn     اشتراک‌گذاری در Twitter     ارسال با Telegram
نوشته‌ها از این دست
       ✦   هدر فایل bits/stdc++.h
آخرین نوشته‌ها
       ✦   الگوریتم آنلاین
       ✦   ابزار CodinGame
بازدید نوشته
          ۲۴ ساعت گذشته:  ۱ بازدید
          ۳۰ روز گذشته:  ۲۹ بازدید
          کل: ۲۰۶۴ بازدید
  • 1
  • 2
  • 3
  • 4
  • 5

نام: *  

پست الکترونیک:

متن پیام: *  

01 02 06 07 08 09 10 11 12 13 14