什么时候,可以关闭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读入和输出的准备

原文地址:https://www.cnblogs.com/zhangzehua/p/9499313.html

时间: 2024-10-12 15:47:00

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

C++的常用输入及其优化以及注意事项

$P.S:$ 对于输入方式及其优化有了解的大佬可直接阅读$Part$ $2$ 特别鸣谢:@归斋目录: $Part$ $1$                                                        读入方式们的万年争斗 $Part$ $2$                                                        读入不谨慎,爆0两行泪 $Part$ $1$ 读入方式们的万年争斗 有一些$OIer$很喜欢用$cin$,多方便

ACM比赛中如何加速c++的输入输出?如何使cin速度与scanf速度相当?什么是最快的输入输出方法?

在竞赛中,遇到大数据时,往往读文件成了程序运行速度的瓶颈,需要更快的读取方式.相信几乎所有的C++学习者都在cin机器缓慢的速度上栽过跟头,于是从此以后发誓不用cin读数据.还有人说Pascal的read语句的速度是C/C++中scanf比不上的,C++选手只能干着急.难道C++真的低Pascal一等吗?答案是不言而喻的.一个进阶的方法是把数据一下子读进来,然后再转化字符串,这种方法传说中很不错,但具体如何从没试过,因此今天就索性把能想到的所有的读数据的方式都测试了一边,结果是惊人的. 竞赛中读

codeforces 906C

codeforces 906C A. Shockers introduction 这道题要充分理解题意和输入的意思. method 可以用集合的思想的做 集合\(A\)表示可行的字母,初始是\(26\)个字母 集合\(B\)表示每一句操作的字符的集合 集合\(C\)表示猜过的字符的集合 每读入一个动作, 如果\(|A|>1\)我们做如下操作: \[ A= \begin{cases} A\cap B, & \text{if $op$ is !} \ A\setminus B, & \t

【转载】探寻C++最快的读取文件的方案

原文地址:https://www.byvoid.com/blog/fast-readfile/ 在竞赛中,遇到大数据时,往往读文件成了程序运行速度的瓶颈,需要更快的读取方式.相信几乎所有的C++学习者都在cin机器缓慢的速度上栽过跟头,于是从此以后发誓不用cin读数据.还有人说Pascal的read语句的速度是C/C++中scanf比不上的,C++选手只能干着急.难道C++真的低Pascal一等吗?答案是不言而喻的.一个进阶的方法是把数据一下子读进来,然后再转化字符串,这种方法传说中很不错,但具

c++读入之 -- 汉字读入遇到的问题

好吧,课题和汉语处理有关,于是就要求用c++来读入汉字进行处理. 首先使用wchar_t字符即宽字符,然后这样定义: 1 #include <cstdio> 2 #include <cwchar> 3 4 using namespace std; 5 6 int main() { 7 wchar_t* ch; 8 scanf("%S", ch); 9 printf("%S", ch); 10 return 0; 11 } 然后结果是什么呢?没

[Reprint] 探寻C++最快的读取文件的方案

作者:BYVoid(https://www.byvoid.com/zhs/blog/fast-readfile) 在竞赛中,遇到大数据时,往往读文件成了程序运行速度的瓶颈,需要更快的读取方式.相信几乎所有的C++学习者都在cin机器缓慢的速度上栽过跟头,于是从此以后发誓不用cin读数据.还有人说Pascal的read语句的速度是C/C++中scanf比不上的,C++选手只能干着急.难道C++真的低Pascal一等吗?答案是不言而喻的.一个进阶的方法是把数据一下子读进来,然后再转化字符串,这种方法

探寻C++最快的读取文件的方案

在竞赛中,遇到大数据时,往往读文件成了程序运行速度的瓶颈,需要更快的读取方式.相信几乎所有的C++学习者都在cin机器缓慢的速度上栽过跟头,于是从此以后发誓不用cin读数据.还有人说Pascal的read语句的速度是C/C++中scanf比不上的,C++选手只能干着急.难道C++真的低Pascal一等吗?答案是不言而喻的.一个进阶的方法是把数据一下子读进来,然后再转化字符串,这种方法传说中很不错,但具体如何从没试过,因此今天就索性把能想到的所有的读数据的方式都测试了一边,结果是惊人的. 竞赛中读

PAT乙级(Basic Level)真题训练

写在前面:PAT冬季赛马上就要开始了!??这一次先报一个乙级冲鸭!我感Jio乙级里面还是有蛮多水题的,也有些题虽然看上去是水题,但是真正用代码实现起来的话会卡你那么一下,比如第5题数素数真的神打脸. 天上不会掉馅饼的,好好学习,努力奋斗才能梦想成真. 1. D进制的A + B(20) 题目描述: 输入两个非负10进制整数A和B(<= 230-1),输出A + B的D(1 <D <= 10)进制数. 输入描述: 输入在一行中依次给出3个整数A,B和D. 输出描述: 输出A + B的D进制数

LeetCode - 刷题经验

1.加快代码速度 刷了前面几道题发现速度总是处于尾部10%,刚开始非常不服,后来仔细一看那些排名靠前的提交,发现了猫腻.几乎每一个提交都有这样的一段代码: static const auto io_sync_off = []() { // turn off sync std::ios::sync_with_stdio(false); // untie in/out streams std::cin.tie(nullptr); return nullptr; }(); 啥意思?看拆分的这几部分解析