بستن پنجره
از نوشته‌ها خوشم اومد:
از این نوشته خوشم اومد:
تجربه‌های پراکنده‌ی یک مسعود
در صورت ناخوانا بودن نوشته‌ها، از مرورگر دیگری استفاده کنید.

sync_with_stdio در زبان ++C - تجربه‌های پراکنده‌ی یک مسعود
تجربه‌های پراکنده‌ی یک مسعود
000.005.00

نکته‌ای در مورد کارایی عملیات ورودی و خروجی در زبان برنامه‌نویسی ++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 استفاده نکنیم. چون از دو بافر جدا استفاده می‌کنن و ممکنه ترتیب عملیات اونطور که مد نظر ما باشه انجام نگیره.


امتیاز نوشته
  • 1
  • 2
  • 3
  • 4
  • 5
ارسال پیام

نام: *  

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

وبگاه:

متن پیام: *

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

 

سوال:   دو هفت  تا؟    (عدد) تا