1. 程式人生 > >卡常神器——register 與 快速讀入輸出

卡常神器——register 與 快速讀入輸出

可能 () amp 很多 服務 char 讀取 get 裏的

快速讀入模板

int read() {
    int s = 0, w = 1;
    char ch = getchar(); //getchar() 一次從鍵盤讀入一個字符
    while (ch <=‘0‘ || ch > ‘9‘) {
        if (ch == ‘-‘) w = -1;
        ch = getchar();
    }
    while (ch >= ‘0‘ && ch <= ‘9‘) {
        s = s * 10 + ch - ‘0‘;
        ch = getchar();
    }
    return s * w;
}

快速輸出模板

inline void write(int x) { // inline 可以防止爆棧,雖然現在一般不太會
    if (x < 0) putchar(‘-‘), x = -x;
    if (x > 9) write(x / 10);
    putchar(x % 10 + ‘0‘);
}

register

register 就是CPU寄存器的意思,這個裏面的變量要比放在內存裏讀取快很多,所以想下面for循環裏的變量i就可在聲明這個變量的時候加上register可以讓for循環快很多。但是register的空間很小,一般也就幾MB的樣子,服務器的CPU可能會更大一些。如果寄存器用完了即使你的變量聲明的時候帶上register

也不會放進寄存器裏面。

for (register int i = 1; i <= 1000000; ++i) {
    printf("%d\n", i);
}

卡常神器——register 與 快速讀入輸出