在一些题目中会出现数据输入很大的情况,如果我们运用不好读取数据工具的话,那么很可能会在读取数据上花费较多的时间,甚至还没读完就超时了。
读取速度
cin < cin(关闭流同步) < scanf < getchar()
cin(关闭流同步)
为什么 cin(关闭流同步) 的读入数据的能力大于 cin (未关闭流同步)?
C++中, cin 和 cout 要默认与 stdio 同步。在 cin、cout 输入输出下,会有进行缓冲同步 stdio ,使 scanf() 与 printf() 能够与 cin、cout 混用,也导致 cin、cout 语句输入输出缓慢。
cin 关闭流的同步,就能够实现使用 cin、cout 输入输出提速的效果。
std::ios::sync_with_stdio(false);
当未关闭流同步时,使用cin读取一百万个整数用了 2.536秒。
当关闭流同步后,使用cin读取一百万个整数仅仅用了 0.439秒。
读取效率得到了显著提高。
//输入data.txt数据
#include<bits/stdc++.h>
using namespace std;
const int MAXN = 1000000;
int main()
{
std::ios::sync_with_stdio(false);
freopen("data.txt","w",stdout);
for (int i=0;i<MAXN;i++)
cout << i <<" ";
return 0;
}
//关闭流同步
//data.txt中有一百万个整数
#include<bits/stdc++.h>
const int MAXN = 10000000;
int numbers[MAXN];
i