滑蒻稽的博客

快速读写相关

快速读入

最基础版本,主要思想是一个一个读入

int read()
{
    int s=1,a=0;
    char c=getchar();
    while(!isdigit(c))
    {
        if(c=='-') s=-s;
        c=getchar();
    }
    while(isdigit(c))
    {
        a=a*10+c-'0';
        c=getchar();
    }
    return s*a;
}//v1

这个版本很好理解,可以加上inline快一点

inline int read()
{
    int s=1,a=0;
    char c=getchar();
    while(!isdigit(c))
    {
        if(c=='-') s=-s;
        c=getchar();
    }
    while(isdigit(c))
    {
        a=a*10+c-'0';
        c=getchar();
    }
    return s*a;
}//v2

最后加上位运算以及手写isdigit函数

inline int read()
{
    int s=1,a=0;
    char c=getchar();
    while(c<'0'||c>'9')
    {
        if(c=='-') s=-s;
        c=getchar();
    }
    while(c>='0'&&c<='9')
    {
        a=(a<<1)+(a<<3)+(ch^48);
        c=getchar();
    }
    return s*a;
}//v3
posted @ 2020-05-28 16:44  huaruoji  阅读(203)  评论(0编辑  收藏  举报