卡常神器——register 與 快速讀入輸出
阿新 • • 發佈:2018-10-05
可能 () 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 與 快速讀入輸出