الگوریتمستان

برنامه‌نویسی، طراحی الگوریتم و حل مسئله‌های الگوریتمی

 
در صورت ناخوانا بودن نوشته‌ها، از مرورگر دیگری استفاده کنید.
sync_with_stdio در زبان ++C - الگوریتمستان
الگوریتمستان
  »  

sync_with_stdio در زبان ++C

        نکته‌ای در مورد کارایی عملیات ورودی و خروجی در زبان برنامه‌نویسی ++C و عملکرد تابع sync_with_stdio

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

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

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

به اشتراک‌گذاری نوشته
اشتراک‌گذاری در LinkedIn     Cloob     اشتراک‌گذاری در Twitter     اشتراک‌گذاری در Facebook     ارسال با Telegram
برچسب‌ها
امتیاز نوشته
  • 1
  • 2
  • 3
  • 4
  • 5

نام: *  

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

وبگاه:

متن پیام: *

01 02 03 04 05 06 07 08 09 10 11 12 13 14

 


الگوریتمستان در تلگرام

   

 

پیوند کوتاه: عمر نوشته:  ۹۷۰ روز
تعداد بازدید:  ۱۴۲۱ بازدید
تعداد امتیاز:  ۱ امتیاز
میانگین امتیاز:  ۵.۰۰  از  ۵.۰۰
»  بازی Lights Out و ریاضیات دوست داشتنی
        حل بازی Lights Out با ریاضیات دوست داشتنی
»  نکته‌ای در مورد کلاس‌ها و مجموعه‌ها در ++C
        بررسی روش تعریف کلاس برای قابلیت استفاده از ظرف‌های مجموعه (set و unordered_set) در زبان برنامه‌نویسی ++C
»  سوال Free Ticket
        راهنمای حل سوال Free ticket، از سوالات المپیاد ملی کامپیوتر هندوستان
»  نکته‌ای در محاسبه‌ی زمان اجرای کد
        در مورد تفاوت توابع clock و time در زبان برنامه‌نویسی ++C برای محاسبه‌ی زمان اجرای برنامه
»  ابزار VJudge
        معرفی وب‌سایت Virtual Judge برای برگزاری مجازی مسابقه‌ی برنامه‌نویسی به سبک مسابقات ACM-ICPC
»  هدر فایل bits/stdc++.h
        معرفی هدرفایل bits/stdc++.h برای کاهش زمان آماده شدن کد مسابقات برنامه‌نویسی
»  نکته‌ای از مسأله‌ی Graphical Editor
        استفاده از stringstream در حل سوالات مسابفات برنامه‌نویسی با زبان برنامه‌نویسی ++C
»  ابزار UVA Toolkit
        معرفی وب‌سایت UVA Toolkit برای کمک به حل سوالات برنامه‌نویسی UVA Online Judge
»  نکته‌ای از مسأله‌ی LC-Display
        نکته‌ای در باب روش ذخیره کردن ورودی یک مسأله
»  تابع popen در زبان ++C
        روش اجرای برنامه‌ای دیگر داخل کد ++C و استفاده از خروجی آن
»  ظرف‌ها در ++C
        معرفی انواع ظرف‌ها (نگهدارنده‌ها - containers) در زبان برنامه‌نویسی ++C
»  سینوس و کسینوس را قورت بده
        محاسبه‌ی جدولی سینوس و کسینوس زوایای مشهور
»  نکته‌ای در استفاده از map
        نکته‌ای در مورد استفاده از ساختمان داده‌ی map با مثالی به زبان برنامه‌نویسی ++C
»  محاسبه‌ی فاکتوریل اعداد بزرگ
        چطور شاخ غول فاکتوریل را بشکنیم