总结一下输入数据时间优化的小技巧

本文介绍了C++中提高输入效率的方法,包括禁用cin与stdin的同步以接近scanf的速度,以及通过自定义读取函数进一步优化,使用char类型读取再转换为整型,经测试该方法比传统scanf更快。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       大家都知道,c++的输入可以为scanf(cstdio库中)和cin(iostream库中)。其中scanf相对cin要快接近10倍,因为cin与stdin同步,是输入流,还需要判断数据类型。不像scanf是格式化输入,但在很长的程序中写起来比scanf一堆东西快很多。那么怎么解决这个矛盾呢?

可以在主函数里加一段这个:

ios::sync_with_stdio(false);
      这个语句禁用了默认的cin与stdin的同步,让cin的效率与scanf很接近了。

      有人可能会问:会影响freopen吗?答案是否定的。

      但还是不够快啊,特别是对于那些没想出来办法,只会用深搜的题,能省点时间省一点。

      那么你可以自己写一个输入函数啊!一下是读入整形数的自拟读入函数优化法。大家知道,读入char类型比读入int快很多,那么我们可以写一个用char读入,然后转化之为整形数来优化!来咯:

inline void read( int&x ) 
{
    int f=1;x=0;char c=getchar();
    while(c>'9'||c<'0') 
    {
     if(c=='-') f=-1;c=getchar();//判断是否为负
    }
    while(c>='0'&&c<='9') x=10*x+c-48,c=getchar();
    x=x*f;
}
      经测试,相比scanf,此方法又会快很多。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值