zoukankan      html  css  js  c++  java
  • 快速输入输出

    由于c++自带的scanf有时候会被卡,自己写一下输入输出会让程序快很多,下面我用的是fread加速读入.

    fread的速度是scanf,cin关同步指针的几十倍,是普通read的2倍.让程序跑得更快.

    听说还有一种更快的方法叫mmap,可本蒟蒻不会,如果感兴趣可以自行百度.

    为了看的时候方便,我把这些封装在一个namespace里面,要用的时候调用就可以了.

    下面是代码:

    1 namespace zdy{
    2 #define ll int
    3 #define pob (fwrite(fob::b,sizeof(char),fob::f-fob::b,stdout),fob::f=fob::b,0)
    4 #define pc(x) (*(fob::f++)=(x),(fob::f==fob::g)?pob:0)
    5 #define gc ((*fib::f)?(*(fib ::f++)):(fgets(fib::b,sizeof(fib::b),stdin)?(fib::f=fib::b,*(fib::f++)):-1))
    6 namespace fib{char b[300000]= {},*f=b;}inline void in(ll &x){x=0;char c;bool f=0;while((c=gc)>'9'||c<'0')if(c=='-')f=!f;x=c-48;while((c=gc)<='9'&&c>='0')x=x*10+c-48;if(f)x=-x;}namespace fob{char b[300000]= {},*f=b,*g=b+300000-2;}struct foce{~foce(){pob;fflush(stdout);}} _foce;namespace ib{char b[100];}inline void out(ll x){if(x==0){pc(48);return;}if(x<0){pc('-');x=-x;}char *s=ib::b;while(x) *(++s)=x%10,x/=10;while(s!=ib::b) pc((*(s--))+48);}inline void outn(ll x){out(x);pc('
    ');}
    7 }using namespace zdy;

    只要把这段代码粘贴到代码的主程序的上面,就可以使用in(x)输入x,out(x)输出x,outn(x)输出x并换行

     ll指的是要读入的整数的类型,可以是short,int,long long,_int64/_int128等类型

  • 相关阅读:
    【Java8】 @FunctionalInterface 函数式接口
    集合使用copy与mutableCopy的区别
    GCD中的dispatch_sync、dispatch_sync 分别与串行、并行队列组合执行小实验
    podspec文件介绍
    iOS系统app崩溃日志手动符号化
    webView文本长按显示英文
    深拷贝
    view向全屏延伸时的属性设置
    iOS 模拟器截屏快捷键
    mysql 优化常用语句
  • 原文地址:https://www.cnblogs.com/mimiorz/p/9160670.html
Copyright © 2011-2022 走看看