读入优化

scanf比cin快

但有比scanf更快的

当你cin这样的时候

就要改用scanf

要更快

快读

#include<iostream>
using namespace std;
void read(int &x){
    char s=getchar();int f=1;x=0;
    while('0'>s||s>'9'){if(s=='-')f=-1;s=getchar();}
    while('0'<=s&&s<='9'){x=x*10+s-'0';s=getchar();}
    x*=f;
}
int main()
{
    int a;
    read(a);
    cout<<a;
}

6.17

玄学优化

比getchar还快的fread

读入只能是文件

#include<iostream>
#include<cstdio>
char buf[1000001],*p1=buf,*p2=buf;
#define getchar() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1000000,stdin),p1==p2)?EOF:*p1++)
inline int read() {
    char c=getchar();int x=0,f=1;
    while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
    while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
    return x*f;
}
int main()
{
    freopen("a.txt","r",stdin);
    int a;
    a=read();
    std::cout<<a;
    return 0;
}
View Code

注意事项

切记:不要与scanf()混用!因为(文件流的一些内容可能已经被加载到缓存空间里了 )
不过在第一次使用fread()之前还是可以scanf()的

7.3

又看到一个不知道算不算优化的地方

n=n*10+s-'0'

n=(n<<3)+(n<<1)+s-48;

 

全部评论

相关推荐

湫湫湫不会java:先投着吧,大概率找不到实习,没实习的时候再加个项目,然后把个人评价和荣誉奖项删了,赶紧成为八股战神吧,没实习没学历,秋招机会估计不多,把握机会。或者说秋招时间去冲实习,春招冲offer,但是压力会比较大
点赞 评论 收藏
分享
06-07 17:17
嘉兴学院 教师
心爱的idea:你孩
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-27 15:07
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务