本节是前置知识。
包括算法库<algorithm>
,C中的<cstirng>
,C++中的<string>
;
c++#include <bits/stdc++.h>
算法题目中,时间上限一般都是1s
,
相比于scanf
和printf
,C++中的cin
和cout
因为要把输入输出的数据通过一个流缓冲区来同步C的scanf
和printf
,以至于当scanf
和printf
以及cin
和cout
同时使用时不发生混乱。
c++#include <iostream>
using namespace std;
int main() {
// 关闭输入输出缓存,使效率提升
ios::sync_with_stdio(false);
// 解除cin和cout的默认绑定,来降低IO的负担使效率提升
cin.tie(NULL); cout.tie(NULL);
...
return 0;
}
ios::sync_with_stdio(false)
通过关闭输入输出缓存,即像scanf
和printf
一样直接进行,可大大提升输入输出效率。其次,在输出时使用\n
来进行换行,避免使用endl
也可提升输出效率。
注意:当设置为false
时,cin
就不能和scanf
,sscanf
, getchar
, fgets
等同时使用。
cin.tie(NULL);cout.tie(NULL)
解除cin
和cout
运行库层面的对数据传输的默认绑定。由于存在数据传输的默认绑定,cin
和cout
在每次操作的时候(也就是调用”<<”或者”>>”)都要刷新(调用flush),这样增加了IO的负担。通过解除绑定,可提高输入输出效率。
本文作者:Travis
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 Travis 许可协议。转载请注明出处!