标签:return 输出 lin 大量 bool ++ his turn 字符变量
我把快读快写装进了一个模板中。
本模板使用fread
。
之所以是lite版,是因为它只集成了整型的输入输出与字符的输出优化。
虽经过博主大量测试,但仍可能存在bug,可以私信向博主反馈以及时修改。
后期会出一个所有类型输入输出优化的模板。
读入一个字符变量 c
,使用 io>>c
或 c=io.get()
,会读取换行、空格等空字符;
读入一个整型变量 a
,使用 io>>a
;
读入两个整型变量 a
, b
,使用 io>>a>>b
,以此类推。
输出一个字符 c
,使用 io<<c
或 io.put(c)
;
输出一个整型变量 a
,使用 io<<a
;
输出两个整型变量 a
, b
(不分隔),使用 io<<a<<b
,以此类推。
需要头文件: #include <cstdio>
。
class IO {
#define MAXSIZE 1<<17
#define isdigit(x) (x>=‘0‘&&x<=‘9‘)
public:
inline IO() {sta_int[0]=‘\0‘,s1=s3=ibuf,s2=obuf;}
inline ~IO() {fwrite(obuf,1,s2-obuf,stdout);}
inline char get()
{return (s1==s3&&(s3=(s1=ibuf)+fread(ibuf,1,MAXSIZE,stdin),s1==s3))?0:*s1++;}
inline void put(const char c)
{(s2-obuf==MAXSIZE)&&(fwrite(obuf,1,s2-obuf,stdout),s2=obuf),*s2++=c;}
template<class T>
inline IO &read(T &x) {
register char c=get();
while(isspace(c)&&(c=get()));
register bool f=(c==‘-‘);
x=0,isdigit(c)||(c=get());
while(isdigit(c))
x=(x<<1)+(x<<3)+(c^‘0‘),c=get();
return f&&(x=~x+1),*this;
}
template<class T>
inline IO &write(T x) {
register char *p=sta_int;
(x<0)&&(put(‘-‘),x=~x+1);
do *++p=(x%10)|‘0‘,x/=10; while(x);
while(*p) put(*p--);
return *this;
}
template<class T> inline IO &operator >> (T &x) {return read(x);}
template<class T> inline IO &operator << (const T x) {return write(x);}
protected:
char ibuf[MAXSIZE],obuf[MAXSIZE],sta_int[256],*s1,*s2,*s3;
#undef MAXSIZE
#undef isdigit
}io;
标签:return 输出 lin 大量 bool ++ his turn 字符变量
原文地址:https://www.cnblogs.com/wshcl/p/fast_io_lite.html