首页 C/C++快读快写模板
文章
取消

C/C++快读快写模板

写作目的

快速读写的模板在网上很多,写这篇文章主要是方便自己查看

快读

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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时使用位运算,因为位运算要快于算术运算

快写

1
2
3
4
5
6
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即可

参考资料

本文由作者按照 CC BY 4.0 进行授权

OIer配置VS Code

线段树