当前位置:   article > 正文

C/C++ 快读_c 快读

c 快读

在数据量较大的情况下,即使使用 C 语言提供的 scanf 函数也是会超时,这个时候就需要快读函数了。快读可行的原理是因为 getchar 函数要比 scanf 函数快,所以自己编写的快读函数要更高效一点。此外,在快读函数中使用大量位操作代替加减乘除来减少时间的消耗,也是一个很好的选择,数据量越大,效率提升就越明显。这里在判断是否是数字的时候建议不要使用 isdigit 函数,否则可能会增加耗时。下面给出模板代码,不管是什么类型的快读都只要改变一下类型就可以使用。

/**
 * @brief Micro to check if this 'char' is a digit number.
 * 
 */
#define isDigit(ch) (ch>='0' && ch<='9')

/**
 * @brief to read a number in type 'long long'.
 * 
 * @return long long - the next number to read.
 */
inline long long nextLongLong() {
    long long s = 0, w = 1;
    char ch = getchar();
    for (; !isDigit(ch); ch = getchar())
        if (ch == '-') w = -1;
    for (; isDigit(ch); ch = getchar())
        s = (s << 1) + (s << 3) + (ch ^ 48);
    return (w == -1 ? -s : s);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

效率测试

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/356238
推荐阅读
相关标签
  

闽ICP备14008679号