দুটি কলের বিভিন্ন অর্থ রয়েছে যার পারফরম্যান্সের সাথে কোনও সম্পর্ক নেই; সত্য যে এটা সঞ্চালনের সময় দ্রুত সম্পন্ন করা (বা হতে পারে শুধু একটি পার্শ্ব প্রতিক্রিয়া)। তাদের প্রত্যেকটি কী করে তা আপনার বুঝতে হবে এবং প্রতিটি প্রোগ্রামে অন্ধভাবে সেগুলি অন্তর্ভুক্ত করবেন না কারণ তারা দেখতে অপ্টিমাইজেশনের মতো।
ios_base::sync_with_stdio(false);
এটি সি এবং সি ++ স্ট্যান্ডার্ড স্ট্রিমের মধ্যে সিঙ্ক্রোনাইজেশন অক্ষম করে। ডিফল্টরূপে, সমস্ত স্ট্যান্ডার্ড স্ট্রিমগুলি সিঙ্ক্রোনাইজ করা হয়, যা অনুশীলনে আপনাকে সি- এবং সি ++ - শৈলী I / O মিশ্রিত করতে এবং সংবেদনশীল এবং প্রত্যাশিত ফলাফল পেতে দেয়। আপনি যদি সিঙ্ক্রোনাইজেশন অক্ষম করেন, তবে সি ++ স্ট্রিমগুলিতে তাদের নিজস্ব স্বতন্ত্র বাফার থাকার অনুমতি দেওয়া হবে যা সি- এবং সি ++ - শৈলীর I / O মিশ্রণ তৈরি করে।
এছাড়াও মনে রাখবেন যে সিঙ্ক্রোনাইজ করা সি ++ স্ট্রিমগুলি থ্রেড-সেফ রয়েছে (বিভিন্ন থ্রেড থেকে আউটপুট ইন্টারলিভ করতে পারে তবে আপনি কোনও ডেটা রেস পান না)।
cin.tie(NULL);
এই unties cin
থেকে cout
। বাঁধা স্ট্রিমগুলি নিশ্চিত করে যে অন্য স্ট্রিমের প্রতিটি আই / ও অপারেশনের আগে একটি স্ট্রিম স্বয়ংক্রিয়ভাবে ফ্লাশ হয়ে গেছে।
বুদ্ধিমান ব্যবহারকারীর ইন্টারঅ্যাকশন নিশ্চিত cin
করতে ডিফল্টরূপে বাঁধা হয় cout
। উদাহরণ স্বরূপ:
std::cout << "Enter name:";
std::cin >> name;
যদি cin
এবং cout
বাঁধা থাকে, প্রোগ্রামটি ব্যবহারকারী থেকে ইনপুট অনুরোধ করার আগে আপনি আউটপুটটি ফ্লাশ হয়ে যাওয়ার আশা করতে পারেন (অর্থাত্ কনসোলটিতে দৃশ্যমান)। আপনি যদি স্ট্রিমগুলি মুক্ত করেন তবে প্রোগ্রামটি ব্যবহারকারী তাদের নাম প্রবেশের অপেক্ষায় অবরুদ্ধ হতে পারে তবে "নাম লিখুন" বার্তাটি এখনও দৃশ্যমান নয় (কারণ cout
ডিফল্ট অনুসারে বাফার করা হয়, শুধুমাত্র চাহিদা অনুযায়ী বা আউটপুট কনসোলে প্রদর্শিত হয় / যখন প্রদর্শিত হয়) বাফার পূর্ণ।
তাই আপনি যদি আলান যদি cin
থেকে cout
, আপনি কি নিশ্চিত ঘনিষ্ঠরূপে করতে হবে cout
নিজে প্রত্যেক সময় আপনি ইনপুট আশা সামনে কিছু প্রদর্শন করাতে চান cin
।
উপসংহারে, তাদের প্রত্যেকটি কী করে তা জেনে রাখুন, পরিণতিগুলি বুঝতে পারেন এবং তারপরে সিদ্ধান্ত নিন আপনি গতি উন্নতির সম্ভাব্য পার্শ্ব প্রতিক্রিয়াটি সত্যিই চান বা প্রয়োজন কিনা ।