快到難以想象的快速讀模版
阿新 • • 發佈:2018-12-16
沒錯,比上一個快速讀寫模版 跳轉 還要快,這個模版是利用fread方法實現一次性讀完(速度快,缺點也明顯,特別耗費記憶體!!)
具體模版如下:
namespace IO { const int MX = 4e7; //1e7 佔用記憶體 11000kb char buf[MX]; int c, sz; void begin() { //該方法用於main方法開頭位置,可一次性讀完全部輸入 c = 0; sz = fread(buf, 1, MX, stdin); //一次性全部讀入 } inline bool read(int &t) { //用於從buf中讀入每個數 while (c < sz && buf[c] != '-' && (buf[c] < '0' || buf[c] > '9')) c++; if (c >= sz) return false; //若讀完整個緩衝塊則退出 bool flag = 0; if(buf[c] == '-') { flag = 1; c++; } for(t = 0; c < sz && '0' <= buf[c] && buf[c] <= '9'; c++) t = t * 10 + buf[c] - '0'; if(flag) t = -t; return true; } }
具體用法如下:
int a[105];
int main() {
IO::begin(); //一次性讀完全部輸入
int T, n;
IO::read(T); //從buf中讀入到T
while (T--) {
IO::read(n); //從buf中讀入到n
for (int i = 0; i < n; i++) {
IO::read(a[i]); //從buf中讀入到a[i]
}
}
}
注意!!!只有當執行ctrl + z時才代表IO::begin()結束(在windows下,LINUX下為ctrl + d),程式正式執行~
就醬紫~