引例:
大家都知道,在c++中有兩種輸入、輸出方式—scanf和cin,但是,它們之間存在的差異,你們知道麼?下面請看測評吧!
測試題目:
輸入n個數,輸出n個數。
測試環境:
ubuntu12.04 i3cpu
4g記憶體 7200轉硬碟
測試結果:
測試結果使用linux的time測試時間,結果如下:
10000組資料時:
real代表程式執行總時間,user代表使用者輸入資料的時間,sys代表系統時間
從上面的測試結果中,貌似沒有發現scanf的厲害之處甚至好像還慢些(資料存在波動性),那我們接著往下看:
100000組資料時:
這時scanf已經開始嶄露頭角了,不過差異還不是很大,咱們接著往下看!
1000000組資料時:
這時候大家可以發現,cin所用的時間是scanf的兩倍還多!!
後面就不繼續往下測的,對這個感興趣或者想自己驗證的童鞋可以繼續。。。。不過據說scanf的輸入速度是cin的3倍多!!
測試總結:
從以上測試結果,大家可以發現scanf和cin的巨大差異了吧!那麼,這個東西最主要在哪應用呢?不用說都能想到,當然是acm平台啦!那些演算法沒問題時間超限的童鞋,你們說不定就是因為用了cin導致的呢!
再大的資料範圍就要
#include#include更快的我還沒學會。。。using
namespace
std;
#define ll long long//
自定資料範圍
inline ll read()
while(ch>='
0'&&ch<='
9')
return x*f;
}int
main()
關於cin和scanf速度的問題
在leetcode最優解法中常常看到 int型別引數 static int x string型別引數 int some 查了一下發現是解決 cin,cout效率低的問題 cin cout之所以效率低,是因為先把要輸出的東西存入緩衝區,再輸出,導致效率降低,而這段語句可以來打消iostream的輸入 ...
scanf和cin輸入型別不匹配時造成的死迴圈問題
下面兩段 要實現的功能是往整數變數i中輸入乙個資料,輸入數字1時退出,然而當輸入乙個字元時,整個程式會變成乙個死迴圈。c int i 0 while i 1 c語言 int i 0 while i 1 原因 造成死迴圈的原因也很簡單,當第一次通過scanf函式讀入整數時,如果我們輸入的是乙個字元,那...
為什麼一定情況下scanf比cin快
有時候發現oj時完全沒錯的 死活過不了,超時超時搞得我頭炸掉,而且我敢保證 邏輯等的都是沒有問題的,就是超時。當時只想罵人,後來發現這是我在知識上的缺失。scanf是用指標操作的,沒有型別安全機制。比如乙個char型別資料你就可以用 f獲得輸入,而不會報錯,但在執行時會出現異常。cin是自動判斷你的...