散装 C++ (一些小寄巧)

文章介绍了使用C++的#pragmaGCCoptimize进行编译器优化的方法,包括不同级别的优化选项,并展示了如何创建自定义的Fastio类以加速输入输出操作,如使用inline和register关键字提升程序效率。
摘要由CSDN通过智能技术生成

散装C++

  1. 优化小寄巧:氧气优化(O2优化O2优化)

    #pragma GCC optimize(1)
    #pragma GCC optimize(2)
    #pragma GCC optimize(3,"Ofast","inline")
    #pragma GCC optimize(3) // 平常时用这个,考试时用上面那个
  2. 优化小寄巧:让你的程序在用了之后螺旋升天

    inline void a(void);// 在函数前加个 inline ,非常的不戳
    for(register int i;...;i++);// 加个 register ,速度提升0.1%
  3. 美滋滋的快速毒写

    typedef long long ll;
    namespace FIO_ {
     const string _enter="\n";
     const string _space=" ";
     const int custom_str_end=(1<<0);
     struct FastioSet {
         int string_set,cstr_set;
         char str_end_char;
         void init_ioSet() {
             string_set=0;
             cstr_set=0;
             str_end_char=' ';
             return ;
         }
     };
     struct Fastio {
         FastioSet ioset;
         Fastio() {
             ioset.init_ioSet();
             return ;
         }
    
         //以下实现输入功能
         friend Fastio& operator>>(Fastio& f_io,int& _int) {// 相当于 cin>>(int)
             int ch=getchar(),res=0,f=1;
             while(ch<48||ch>57) {
                 if(ch==45) f=-1;
                 ch=getchar();
             }
             while(ch>=48&&ch<=57) {
                 res=(res<<3)+(res<<1)+(ch^48);
                 ch=getchar();
             }
             _int=res*f;
             return f_io;
         }
         friend Fastio& operator>>(Fastio& f_io,ll& _ll) {
             int ch=getchar();
             ll res=0,f=1LL;
             while(ch<48||ch>57) {
                 if(ch==45) f=-1;
                 ch=getchar();
             }
             while(ch>=48&&ch<=57) {
                 res=(res<<3)+(res<<1)+(ch^48);
                 ch=getchar();
             }
             _ll=res*f;
             return f_io;
         }
         friend Fastio& operator>>(Fastio& f_io,string& s) {// 相当于 cin>>(string)
             s.clear();
             char ch=getchar();
             if(f_io.ioset.string_set&custom_str_end)
                 while(ch!=f_io.ioset.str_end_char) {
                     s+=ch;
                     ch=getchar();
                 }
             else
                 while(ch!=' '&&ch!='\n') {
                     s+=ch;
                     ch=getchar();
                 }
             return f_io;
         }
         friend Fastio& operator>>(Fastio& f_io,char cstr[]) {// 相当于 cin>>(char*) 或 cin>>(char[])
             char ch=getchar();
             int p=0;
             if(f_io.ioset.cstr_set&custom_str_end)
                 while(ch!=f_io.ioset.str_end_char) {
                     cstr[p++]=ch;
                     ch=getchar();
                 }
             else
                 while(ch!=' '&&ch!='\n') {
                     cstr[p++]=ch;
                     ch=getchar();
                 }
             cstr[p]='\0';
             return f_io;
         }
    
         // 以下实现输出功能
         friend Fastio& operator<<(Fastio& f_io,int _int) {
             int sta[16],p=0,int2=_int;
             while(int2!=0) {
                 sta[p++]=int2%10;
                 int2/=10;
             }
             for(;p>0;p--) putchar(sta[p-1]+'0');
             return f_io;
         }
         friend Fastio& operator<<(Fastio& f_io,ll _ll) {
             int sta[16],p=0;
             ll ll2=_ll;
             while(ll2!=0) {
                 sta[p++]=ll2%10;
                 ll2/=10;
             }
             for(;p>0;p--) putchar(sta[p-1]+'0');
             return f_io;
         }
         friend Fastio& operator<<(Fastio& f_io,string s) {
             int len=s.size();
             for(int i=0;i<len;i++) putchar(s[i]);
             return f_io;
         }
         friend Fastio& operator<<(Fastio& f_io,char ch) {
             putchar(ch);
             return f_io;
         }
         friend Fastio& operator<<(Fastio& f_io,char str[]) {
             int len=strlen(str);
             for(int i=0;i<len;i++) putchar(str[i]);
             return f_io;
         }
    
         // 设置C格式与C++格式的字符串的结束字符ch
         void str_end_set(char ch) {
             ioset.str_end_char=ch;
             ioset.cstr_set|=custom_str_end;
             ioset.string_set|=custom_str_end;
             return ;
         }
     };
     Fastio io;
     const char fendl='\n';
    };
    using namespace FIO_;
    #define cin io
    #define cout io
    #define endl fendl
    // 哈哈哈在VSCODE里写代码真爽
    // 平时直接正常 cin cout 就行了
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值