没错,比上一个快速读写模版 跳转 还要快,这个模版是利用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),程序正式执行~
就酱紫~