C/C++快读快写模板
写作目的
快速读写的模板在网上很多,写这篇文章主要是方便自己查看
快读
inline int read(){
register int x=0,f=1;
register char ch=getchar();
while(ch<'0'||ch>'9')
{
if(ch=='-') f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9')
{
x=(x<<1)+(x<<3)+(ch^48);
ch=getchar();
}
return x*f;
}
register关键字
将变量放入寄存器,大幅提升效率
inline关键字
函数内联,类似于#define
,可以免去压栈操作
位运算
在计算x
时使用位运算,因为位运算要快于算术运算
快写
inline void write(int x)
{
if(x<0) putchar('-'),x=-x;
if(x>9) write(x/10);
putchar(x%10+'0');
}
多个数字输出
快写函数不会在多个数字之间加空格,需要自己使用putchar(' ')
来实现
long long 类型快速读写
如果要读写long long
类型的数,将相应变量从int
类型改为long long
即可