1. 程式人生 > >C++的輸入輸出與C的輸入輸出比較

C++的輸入輸出與C的輸入輸出比較

在acm寫題時會發現,很多人在讀取題目資料的時候都用scanf,輸出時用printf.因為c的輸入數出效率高得多,程式執行時間會快很多。甚至有些題用cin,cout解題會tle,換成scanf和printf就過了。看過大神用隨機數測試過scanf和cin的效率,最大可能相差十倍。那麼為什麼備受歡迎的c++會比c的慢很多呢?

c++為了保持c原有的特性,預設情況下cin與stdio保持同步,也就是iostream的緩衝與stdio同步,c++的輸入輸出能和c的輸入輸出同時用。正因為這個同步特性,cin與stdin同步進行,cin有了許多額外開銷,cout也是如此。但是熱衷於用c++輸入輸出流的就可以用這段程式碼取消輸入輸出流的同步特性:

ios_base::sync_with_stdio(false);
注意使用這行程式碼後就不能用c的scanf和printf了。然後測試後cin和scanf的效率相差無幾。