快速读入

在竞赛中,遇到大数据时,往往读文件成了程序运行速度的瓶颈,需要更快的读取方式

常用的读入一般为 scanf 读入和 cin 读入两种,相比之下 scanf 的读入效率要高于 cin 。对于这种情况我们常常会关闭 cin 的同步来提高 cin 的效率

1
std::ios::sync_with_stdio(false);

但是在一些情况下,我们一般使用快速读入来读入数据,以保证在大规模数据需要读入的情况下来节约更多的时间.

下面是快读的代码:

1
2
3
4
5
6
7
inline int read()
{
int Num=0,F=1;char ch=getchar();
while(!isdigit(ch)){if(ch=='-') F=-1;ch=getchar();}
while(isdigit(ch)){Num=(Num<<1)+(Num<<3)+ch-'0';ch=getchar();}
return Num*F;
}

有关于isdigit( )函数可以直接使用万能库,但其本身出自< cctype >库中,用来判断字符是否为0~9的范围内.

这个快速读入的速度要高于scanf 和 cin .

又是一个板子 , 背吧..

end.