读入优化

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;

 

全部评论

相关推荐

点赞 评论 收藏
分享
05-19 15:21
已编辑
门头沟学院 Java
白火同学:你才沟通了200,说实话,北上广深杭这里面你连一座城市的互联网公司都没投满呢,更别说还有各种准一线二线城市了。等你沟通突破了三位数,还没结果再考虑转行的事吧。
点赞 评论 收藏
分享
Twilight_m...:经典我朋友XXXX起手,这是那种经典的不知道目前行情搁那儿胡编乱造瞎指导的中年人,不用理这种**
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-11 17:10
什么素质,我请问呢,要掉小珍珠了。。。又憋屈又生气
苍蓝星上艾露:给它们能的,一群dinner牛马挥刀向更弱者罢了。我写的开源求职AI co-pilot工具,优化你的简历,找到你匹配的岗位,定制你的简历,并让你做好面试准备https://github.com/weicanie/prisma-ai
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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