[板子]快速读入
Posted alessandro
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[板子]快速读入相关的知识,希望对你有一定的参考价值。
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 == '
' || ch == '
' || ch == ' ';}
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
里规定的,考试时应该禁止使用
以上是关于[板子]快速读入的主要内容,如果未能解决你的问题,请参考以下文章