在c++中之所以cin,cout效率低,是因為先把要輸出的東西存入緩衝區,再輸出,導致效率降低,而這段語句可以來打消iostream
的輸入和輸出快取,可節省時間,使效率與scanf與printf相差無幾,還有應注意的是scanf
與printf
使用的標頭檔案應是stdio.h而不是 iostream。
tie是將兩個stream繫結的函數,空引數的話返回當前的輸出流指標。
在ACM裡,經常出現 資料集超大造成 cin TLE的情況。我們可以在IO之前將stdio解除繫結,這樣做了之後要注意不要同時混用cout和printf 之類。
在預設的情況下cin繫結的是cout,每次執行 << 操作符的時候都要呼叫flush,這樣會增加IO負擔。可以通過tie(0)(0表示NULL)來解除cin與cout的繫結,進一步加快執行效率。
使用std::ios::sync_with_stdio(false)
後,cin()
,cout()
不能與printf()
,scanf()
混合使用。
#include<iostream>
#include<cstdio>
using namespace std;
int main(){
std::ios::sync_with_stdio(false);
cin.tie(0);
int a,b,c,d,e;
cin>>a>>b>>c;
scanf("%d %d",&d,&e);
cout<<a<<endl;
printf("%d\n",d);
cout<<b<<c<<endl;
printf("%d\n",e);
return 0;
}
printf()
的位置提前了,而且這與他在程式碼中的位置無關。