namespace io

更快的输入输出!然而我没有写输出

看别人的 namespace io 都是一大坨,我自己精简了一下。

支持任意整形、字符串读入。(io::read</*想要读的类型*/>()

原理很简单,在进行文件读入时 $\tt{fread}$ 一次读入大量文件,具有较快的速度。

由于 $\tt{fread}$ 是读文件的,所以在本地比较麻烦,不想用文件读入时可以把 $\tt{gc}$ 改为 $\tt{getchar}$,即使用 $\tt{std}$ 库里的字符读入。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
namespace io {
const int n = 1e6;
char c, b[n], *i, *j;

inline char gc() {
if (i == j) j = (i = b) + fread(b, 1, n, stdin);
return i == j ? EOF : *i ++;
}

template <typename T> inline T read() {
T x = 0; int f = 0;
while (!isdigit(c = gc())) f |= c == '-';
while (isdigit(c)) x = (x << 1) + (x << 3) + (c & 15), c = gc();
return f ? -x : x;
}

template <> inline string read() {
string s = "";
while (!isgraph(c = gc()));
while (isgraph(c)) s += c, c = gc();
return s;
}
}

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!