[板子]快速读入

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里规定的,考试时应该禁止使用

posted @ 2018-10-06 20:06  AlessandroChen  阅读(261)  评论(0编辑  收藏  举报