[板子]快速讀入
阿新 • • 發佈:2018-10-06
urn read with return while ron pac error getch
iostream
ios::sync_with_stdio(false);
cin.tie(0);
}
getchar() 版
// for Integers template <class T> inline void read(T &x) { x = 0; int ch = getchar(), f = 0; while (ch < '0' || ch > '9') { if (ch == '-') f = 1; ch = getchar(); } while (ch >='0' && ch <='9') { x = (x << 1) + (x << 3) + (ch ^ 48); ch = getchar(); } if (f) x = -x; }
fread() 版
namespace fastIO{ #define BUF_SIZE 100000 #define OUT_SIZE 100000 bool IOerror = 0; inline char nc() { static char buf[BUF_SIZE], *p1 = buf + BUF_SIZE, *pend = buf+BUF_SIZE; if(p1 == pend) { p1 = buf; pend = buf + fread(buf, 1, BUF_SIZE, stdin); if(pend == p1) {IOerror = 1; return -1;} } return *p1++; } inline bool blank(char ch) {return ch == ' ' || ch == '\n' || ch == '\r' || ch == '\t';} template<class T> inline bool read(T &x){ bool sign = 0; char ch = nc(); x = 0; for(; blank(ch); ch = nc()); if(IOerror) return false; if(ch == '-') sign = 1, ch = nc(); for(; ch >= '0' && ch <= '9'; ch = nc()) x = (x << 1) + (x << 3) + (ch ^ 48); if(sign) x = -x; return true; } inline bool read(double &x){ bool sign = 0; char ch = nc(); x = 0; for(; blank(ch); ch = nc()); if(IOerror) return false; if(ch == '-') sign = 1, ch = nc(); for(; ch >= '0' && ch <= '9'; ch = nc()) x = x * 10.0 + (ch ^ 48); if(ch == '.') { double tmp = 1; ch = nc(); for(; ch >= '0' && ch <= '9'; ch = nc()) tmp /= 10.0, x += tmp * (ch ^ 48); } if(sign) x = -x; return true; } inline bool read(char *s){ char ch = nc(); for(; blank(ch); ch = nc()); if(IOerror) return false; for(; !blank(ch) && !IOerror; ch = nc()) *s++ = ch; *s = 0; return true; } template<class T,class... U>bool read(T& h,U&... t){return read(h)&&read(t...);} #undef OUT_SIZE #undef BUF_SIZE } using namespace fastIO;
註意: template<class T,class... U>bool read(T& h,U&... t){return read(h)&&read(t...);}
是 c++11
裏規定的,考試時應該禁止使用
[板子]快速讀入