std::ios::sync_with_stdio(false)提高效率
在c++中之所以cin,cout效率低,是因為先把要輸出的東西存入緩沖區,再輸出,導致效率降低,而這段陳述句可以來打消iostream的輸入和輸出快取,可節省時間,使效率與scanf與printf相差無幾,還有應注意的是scanf與printf使用的頭檔案應是stdio.h而不是 iostream,
tie 函式
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()的位置提前了,而且這與他在代碼中的位置無關,
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/154086.html
標籤:其他
