大家都知道,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,此方法又会快很多。