C++读入优化的黑科技
简述
平时写的快速读入,大多数是指一个一个字符读入,再转成数字。 但是有一种更快的方法: 强行读入整个输入文件,存在一个字符串里。 接着在这个字符串里利用快速读入转成数字。 速度非常快。 ### 基本代码:
#include<****>
const int N=1<<27;//可以修改,表示输入文件不会超过的长度
char buf[N],*inf=buf;
int read(){//这是一个读不进负数的数字读入
int k=0;
while(!isdigit(*inf))++inf;
while(isdigit(*inf)){
k=k*10+(*inf-'0');
++inf;
}
return k;
}
int main(){
//freopen(***); //开文件必须在fread前面
fread(buf, 1, N, stdin);//读入整个输入文件
*****
return 0;
}
注意:不要用void read(int &),这样会更慢
### 效果 uoj里最快的代码用的一般都是黑科技读入。 我测试了一下:
先读入一个数n,接着读入n个数。 30%:n<=200000 70%:n<=2000000
100%:n<=10000000 评测环境:i5,4G的windows7下lemon开O2评测
fread快读的效果: 
