c++的输入优化

入队快1年了,看过各种各样的博客,经常看到有人在输入的时候弄得很麻烦,今天我算是弄懂了原来这是优化,getchar的输入速度比scanf要快所以有大量输入数据的时候,想要节省时间,优化输入是个不错的做法。下面给模板

const int read()  
{  
    char ch = getchar();  
    while (ch<'0' || ch>'9') ch = getchar();  
    int x = ch - '0';  
    while ((ch = getchar()) >= '0'&&ch <= '9') x = x * 10 + ch - '0';  
    return x;  
}  

输出挂也是有滴!

template <class T>
inline void print_d(T x)
{
    if (x > 9)
    {
        print_d(x / 10);
    }
    putchar(x % 10 + '0');
}



鉴于多校的一些迷之卡输入,非要用fread(),这里放个超级输入挂

namespace IO {  
    const int MX = 5e7; 
    char buf[MX]; int c, sz;  
    void begin() {  
        c = 0;  
        sz = fread(buf, 1, MX, stdin);  
    }  
    inline bool read(int &t) {  
        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;  
    }  
} 
IO::begin();
IO::read(n);



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值