0x01 前置准备
所有代码依赖以下头文件,建议统一包含:
- :提供 getchar()、putchar()、fread()、fwrite();
- :提供 cin、cout;
- :提供 isspace();
0x02 基础 I/O 优化:基于 cin 和 cout
优化步骤
- 实现:通过 ios::sync_with_stdio(false) 关闭 C++ 和 C 输入输出流的同步;
- 解释:为了确保混用 C++ 的 cin / cout 和 C 的 printf / scanf 不会产生 I/O 混乱,C++ 和 C 的两种流之间进行了同步。这提高了兼容性,但是产生了大常数。关闭流同步之后就不要同时使用 cin 和 scanf,也不要同时使用 cout 和 printf,否则会造成 I/O 混乱。但可以同时使用 cin 和 printf,也可以同时使用 scanf 和 cout;
- 实现:通过 cin.tie(nullptr) 解除 cin 与 cout 的绑定;
- 解释:在 C++ 中,cin 默认绑定的是 &cout,这意味着每次读入都会调用 flush()。可以用 cin.tie(nullptr) 函数解除这种绑定;
<ul>实现:用 '\n' 替换 endl;
解释:endl 的作用是换行并刷新缓冲区,相当于 cout |