快速輸入函數 -- inline int read()(輸入大數據必備)

近日比賽看到題解用這個函數來進行輸入數據,據說是比scanf還要快。

inline int read() {
    char c = getchar(); int x = 0, f = 1;
    while(c < '0' || c > '9') {if(c == '-') f = -1; c = getchar();}
    while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
    return x * f;
}
int main() {
    int n;
    while (n = read()) {
        cout << n << endl;
    }
}

注意一個點,直接輸入0的話會直接跳出循環,但0還是會被讀進去。
然後還有一個函數比這個更快的,看看就好,估計也用不到吧。。。
在這裏插入圖片描述
引用別人的解釋之爲什麼會比前面那個快的原因:
這個,對於c(c++)裏的標準輸入輸出是有行緩衝的,這裏把原來的行緩衝改爲S大小的字節流,一次讀寫S這麼多,所以快了吧.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章