• 快速读取


    在正常读入的时候公认 scanf 比 cin 快,因为 cin 为了与 stdin 保持同步,防止两者混用时指针混乱,但同时会带来许多额外的开销,尽管可以在主函数中添加:

    std::ios::sync_with_stdio( false );

    来取消 cin 与 stdin 的同步,可以加快 cin 的读入速度,但是在本人测试后,发现 cin 依然比 scanf 慢很多,所以尽量使用 scanf 会比较好,但是在做题时发现仍然存在读入过大时快速读入的方法,就是用 getchar 来代替,getchar 比 scanf 快很多。

    而读入字符和字符串时直接可以用 getchar ,但在读入整型数和浮点型数时,就需要对 getchar 加以改造

    整形数读入:

     1 inline bool scan_d(int &num)  
     2 {
     3         char in;bool IsN=false;
     4         in=getchar();
     5         if(in==EOF) return false;
     6         while(in!='-'&&(in<'0'||in>'9')) in=getchar();
     7         if(in=='-'){ IsN=true;num=0;}
     8         else num=in-'0';
     9         while(in=getchar(),in>='0'&&in<='9'){
    10                 num*=10,num+=in-'0';
    11         }
    12         if(IsN) num=-num;
    13         return true;
    14 }
    View Code

    浮点数读入:

     1 inline bool scan_lf(double &num)  
     2 {
     3     char in;
     4     double Dec = 0.1;
     5     bool IsN = false,IsD = false;
     6     in = getchar();
     7     if(in == EOF) return false;
     8     while(in != '-' && in != '.' && (in < '0' || in > '9'))
     9         in = getchar();
    10     if(in == '-')
    11     {
    12         IsN = true;
    13         num = 0;
    14     }
    15     else if(in == '.')
    16     {
    17         IsD = true;
    18         num = 0;
    19     }
    20     else num = in - '0';
    21     if(!IsD)
    22     {
    23         while(in = getchar(),in >= '0' && in <= '9')
    24         {
    25             num *= 10;
    26             num += in - '0';
    27         }
    28     }
    29     if(in != '.')
    30     {
    31         if(IsN) num = -num;
    32         return true;
    33     }
    34     else
    35     {
    36         while(in = getchar(),in >= '0' && in <= '9')
    37         {
    38             num += Dec * (in - '0');
    39             Dec *= 0.1;
    40         }
    41     }
    42     if(IsN) num = -num;
    43     return true;
    44 }
    View Code
    日后若能有更好的想法,再来完善。 希望看到的大神不吝赐教 orz
  • 相关阅读:
    Nodejs初阶之express
    windows 下安装nodejs及其配置环境
    NodeJS、NPM安装配置与测试步骤(windows版本)
    nodejs npm常用命令
    系列文章--Node.js学习笔记系列
    系列文章--8天学通MongoDB
    python 特征选择 绘图 + mine
    TCP/IP 详解卷一
    CNN检测模型统计检出率
    leetcode 572. Subtree of Another Tree
  • 原文地址:https://www.cnblogs.com/Taskr212/p/9461208.html
Copyright © 2020-2023  润新知