快速輸入輸出類(C )

2021-09-02 18:46:08 字數 2152 閱讀 8370

我們知道,cin/cout是很慢的,所以我們經常scanf/printf。但是如果要求更嚴格一些,速度要更快,該怎麼辦呢?有一種解決辦法,那就是——快速輸入輸出。

快速輸入輸出採用getchar()和putchar()函式,用了數字累加的方法輸入/輸出數。

我們也可以把快速輸入輸出定義成類,就像cin/cout一樣。

**如下:

#ifndef my_qio_h

#define my_qio_h

#include#include#define e_minus(i) pow(0.1,i)

#define e_plus(i) pow(10,i);

using std::getchar;

using std::pow;

using std::putchar;

//assistant function(al)s

struct precision_class;

prec_type operator () (int precision__);

return ans;

}}precision;

//qin

class q_istream

if(i==0 && c=='+') continue;

int_num*=10;

int_num+=c-48;

} if(is_nag) int_num=-int_num;

return *this;

} q_istream operator >> (long long &long_long_num)

if(i==0 && c=='+') continue;

long_long_num*=10;

long_long_num+=c-48;

} if(is_nag) long_long_num=-long_long_num;

return *this;

} q_istream operator >> (unsigned long long &unsigned_long_long_num)

if(is_nag) unsigned_long_long_num=-unsigned_long_long_num;

return *this;

} q_istream operator >> (double &double_num)

if(i==1 && c=='+') continue;

double_num*=10;

double_num+=c-48;

} for(int i=1;;++i)

if(is_nag) double_num=-double_num;

return *this;

}}qin;

//qout

class q_ostream

q_ostream operator << (int int_num)

while(i>0)

return *this;

} q_ostream operator << (long long long_long_num)

while(i>0)

return *this;

} q_ostream operator << (double double_num)

while(i>0)

} else putchar('0');

int_num=double_num;

if(double_num-int_num<=e_minus(precision)) return *this;

putchar('.');

long long long_long_num=(double_num-int_num)*e_plus(precision);

bool bef0=1;

while(i>0)

} return *this;

} q_ostream operator << (precision_class::prec_type precision_num)

}qout;

#endif

其實,快速輸出並不快,甚至比cout還要慢。

現在可以快速地輸入乙個數了!

好,我最後說一下使用方法

快速輸入輸出

由於c 自帶的scanf有時候會被卡,自己寫一下輸入輸出會讓程式快很多,下面我用的是fread加速讀入.fread的速度是scanf,cin關同步指標的幾十倍,是普通read的2倍.讓程式跑得更快.為了看的時候方便,我把這些封裝在乙個namespace裡面,要用的時候呼叫就可以了.下面是 1 nam...

C 輸入輸出

一 標準輸入函式cin 不知道說它是個函式對還是不對,它是代表標準的輸入裝置 鍵盤。他是屬於流的,他的用法和流的用法是一樣的。也就是 cin 變數 小小的說明一下,輸入多個變數可以寫在一行,如 cin x y z 這樣寫不是不允許,而是不好看,如果是不同的變數型別,那就更是沒頭沒腦了。除了你,人家是...

C 輸入輸出

c語言不提供輸入輸出語句,輸入輸出操作有函式來實現。c的標準庫函式中提供了許多輸入輸出函式,如printf scanf 等,使用時需要新增相應的標頭檔案 scanf d num 逗號前為控制語句,後半部分為變數的位址。當中 d是輸入格式控制字串 scanf 函式在接受輸入資料是預設不採集空格,回車,...