zoukankan      html  css  js  c++  java
  • C++快读快写模板

    UpDate 2021/7/19:

    感谢 @Eason_AC 的指点,快读、快写将可以支持任意整型变量的输入与输出。

    正文

    由于快读和快写需要用到 <cstdio> 头文件中的 getchar()putchar() 函数,所以在代码的开头请加入如下代码:

    #include <cstdio>
    

    函数支持变量类型多样,请在调用 read() 函数时在 read() 之间加入 <您要读入的变量类型>
    例:int a = read<int>();

    快读:

    template<typename T> inline T read() {
      T X = 0; bool flag = 1; char ch = getchar();
      while (ch < '0' || ch > '9') {if (ch == '-') flag = 0; ch = getchar();}
      while (ch >= '0' && ch <= '9') {X = (X << 1) + (X << 3) + ch - '0'; ch = getchar();}
      if (flag) return X;
      return ~ (X - 1);
    }
    

    快写:

    template<typename T> inline void write(T X) {
      if (X < 0) {putchar('-'); X = ~ (X - 1);}
      int s[50], top = 0;
      while (X) {s[++top] = X % 10; X /= 10;}
      if (!top) s[++top] = 0;
      while (top) putchar(s[top--] + '0');
      putchar('
    ');//根据情况自行修改
      return;
    }
    

    一键复制快读快写:

    template<typename T> inline T read() {
      T X = 0; bool flag = 1; char ch = getchar();
      while (ch < '0' || ch > '9') {if (ch == '-') flag = 0; ch = getchar();}
      while (ch >= '0' && ch <= '9') {X = (X << 1) + (X << 3) + ch - '0'; ch = getchar();}
      if (flag) return X;
      return ~ (X - 1);
    }
    
    template<typename T> inline void write(T X) {
      if (X < 0) {putchar('-'); X = ~ (X - 1);}
      int s[50], top = 0;
      while (X) {s[++top] = X % 10; X /= 10;}
      if (!top) s[++top] = 0;
      while (top) putchar(s[top--] + '0');
      putchar('
    ');
      return;
    }
    

    例题

    A + B Problem

    #include <cstdio>
    
    template<typename T> inline T read() {
      T X = 0; bool flag = 1; char ch = getchar();
      while (ch < '0' || ch > '9') {if (ch == '-') flag = 0; ch = getchar();}
      while (ch >= '0' && ch <= '9') {X = (X << 1) + (X << 3) + ch - '0'; ch = getchar();}
      if (flag) return X;
      return ~ (X - 1);
    }
    
    template<typename T> inline void write(T X) {
      if (X < 0) {putchar('-'); X = ~ (X - 1);}
      int s[50], top = 0;
      while (X) {s[++top] = X % 10; X /= 10;}
      if (!top) s[++top] = 0;
      while (top) putchar(s[top--] + '0');
      putchar('
    ');
      return;
    }
    
    int main() {
        int a, b;
        a = read<int>(), b = read<int>();
        write(a + b);
        return 0;
    }
    
  • 相关阅读:
    设计模式学习(十二) 责任链模式
    设计模式学习(十一) 享元模式
    设计模式学习(十) 外观模式
    设计模式学习(九) 装饰模式
    设计模式学习(八) 组合模式
    设计模式学习(七) 桥接模式
    设计模式学习(六) 代理模式
    设计模式学习(五) 适配器模式
    设计模式学习(四) 原型模型
    设计模式(三) 建造者模式
  • 原文地址:https://www.cnblogs.com/g-mph/p/14387540.html
Copyright © 2011-2022 走看看