C++快读快写模板
TimeLimitExceed · · 个人记录
C++快读快写模板
这是目前我知道的最快的快读写了,使用 fread() 重写了 getchar() 函数
在调试时需要注释掉第二行(即重写 getchar() 行),提交代码时取消掉注释即可,因为 fread() 仅能使用文件操作读入
如果数据范围和int范围不一样记得修改数据类型
可处理负数版本:
#include<bits/stdc++.h>
#define getchar() (S==T&&(T=(S=B)+fread(B,1,1<<15,stdin),S==T)?EOF:*S++)
using namespace std;
char B[1<<15],*S=B,*T=B;
inline int read()
{
char c(getchar());
int x(0),f(1);
while(!isdigit(c)){if(c=='-')f=-1;c=getchar();}
while(isdigit(c))x=(x<<3)+(x<<1)+(c^48),c=getchar();
return x*f;
}
void write(int a)
{
if(a<0) putchar('-'),a=-a;
if(a>9)write(a/10);
putchar(a%10+48);
}
int main()
{
int m(read());
write(m);
return 0;
}
不可处理负数版本:
#include<bits/stdc++.h>
#define getchar() (S==T&&(T=(S=B)+fread(B,1,1<<15,stdin),S==T)?EOF:*S++)
using namespace std;
char B[1<<15],*S=B,*T=B;
inline int read()
{
char c(getchar());
int x(0);
while(!isdigit(c))c=getchar();
while(isdigit(c))x=(x<<3)+(x<<1)+(c^48),c=getchar();
return x;
}
void write(int a)
{
if(a>9)write(a/10);
putchar(a%10+48);
}
int main()
{
int m(read());
write(m);
return 0;
}