适用于C++11以上的快速IO
注意事项
仅适用于C++11及以上,否则如果你得到CE
后果自负。
代码
原版
加在using namespace std;
下一行。
1 |
|
压行版
1 |
|
速度
这个模板是非常快的:
LOJ #7 / 读入3e6个long long / 五组数据 | 开启-Ofast 优化 | 不开启优化 |
---|---|---|
调试模式getchar | 433ms | 796ms |
加速模式fread 无法使用键盘输入 | 250ms | 539ms |
用法
本模板实现了任何整数类型的读入/输出,同时可以自己写输出函数并使用高速IO。
读入
返回值模式
int x = io.read();
读入一个int
类型整数 。
long long x = io.read<long long>();
读入一个long long
类型整数 (其他数据类型如__int128_t
或unsigned
以此类推 不指定模板参数默认为int
)
引用模式
1 |
|
输出
1 |
|
自定义读入/输出
模板定义了pc
,gc
两个宏(因为他们是宏所以不需要加io.
前缀),用它们代替putchar
与getchar
,开启快速模式后putchar
与getchar
会失效。
自定义读入/读出函数必须要放在IO
结构体内。
最新版本已经统一了API,只需要简单地用io.pc
和io.gc
分别代替putchar
和getchar
即可。自定义IO函数可以写在任何地方。
下面这个示例函数可以输出一个string
。
1 |
|
手动刷新输出缓冲区
如果你不知道这是什么意思可以跳过这段内容。
一般情况下,模板会在你的程序退出时自动刷新输出缓冲区并输出其中的全部内容。
如果你想在程序运行中手动刷新缓冲区(比如IO交互题
)可以使用io.flush()
。
该函数在调试模式下是一个空函数(因为getchar
或putchar
都是即时操作的)。
适用于C++11以上的快速IO
https://www.d0j1a1701.cc/p/d420019/