快到难以想象的快速读模版

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

​ 就酱紫~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值