什么时候,可以关闭cin和stdin的同步

Posted zhangzehua

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么时候,可以关闭cin和stdin的同步相关的知识,希望对你有一定的参考价值。

一些情况下,我们为了保证cin的读取输出速度,会选择在代码开头添加这样一句代码
std::ios::sync_with_stdio(false);
它的功能就是关闭cin和stdin的同步。从而提高cin的速度。可以使cin比scanf更加快。
 
但是身为小白的我,第一次用的时候忽略了一个问题。
这句话的功能是取消cin和stdin的同步,也就是说如果你打代码里同时又cin,cout语句和scanf,prin语句,那么他们就不会同步了。
这意味着,即便你的输出是正确的,因为cin和stdin速度上不再同步的关系。你的输出可能会出现错误的顺序。这个现象不会出现在运行窗口上(所以你调试的时候只在运行窗口无法发现这个问题),但是在输出文件里你会发现,cin的输出会比stdin更快,即便在读入顺序上有先后之差,那么在OJ上毫无疑问会得到一个WA。
 
所以,当我们选择使用
std::ios::sync_with_stdio(false);
这个语句时
就要做好只用cin读入和输出的准备
 

以上是关于什么时候,可以关闭cin和stdin的同步的主要内容,如果未能解决你的问题,请参考以下文章

std::ios::sync_with_stdio(false);

C++输入输出流加速器,关闭同步流,ios::sync_with_stdio(false)和 cin.tie

二叉树的层次遍历

C++ 关于cin输入

C# 最有用的(自定义)代码片段是啥? [关闭]

cin.clear() 和 cin.ignore() 不起作用[关闭]