ios_base::sync_with_stdio(false); cin.tie(NULL);
ios_base::sync_with_stdio(false); cin.tie(NULL);
如果我们不使用它,谁能解释这个陈述的必要性和结果的变化。我读到这个: ios_base的意义::sync_with_stdio(假(;cin.tie(空(; 但无法理解。
通常使用标准C++流的输入和输出与 C 标准 I/O 流同步。例如,通过std::cout
输出与stdout
同步,具有std::cin
的输入与stdin
同步。
这种同步会减慢输出速度,并分别使用std::cout
和std::cin
输入,因此如果写入了大量输出或读取了大量输入,则可以通过调用sync_with_stdio(false)
来禁用此同步。
关于tie
的另一个问题是,默认情况下,std::cout
和std::cin
在某种程度上相互"捆绑"。这意味着,如果您尝试从std::cin
读取输入,则将刷新std::cout
流缓冲区中的所有缓冲输出。
对于交互式程序,这很好,因为这可确保在实际读取输入之前编写可能的输入提示。但同样,如果执行大量批量输入,这可能会在刷新输出时产生一些性能损失。
请注意,对于正常程序,这些可能的性能损失很小,几乎可以忽略不计,并且无关紧要。但这是一种为所谓的"竞争性"编程禁用它的模式。
我的建议是根本不使用它,除非您实际上已经测量,基准测试和描述此类问题属于程序中的前两个或可能是前三个瓶颈,并且有严格的性能要求禁用这些东西将有助于解决。
相关文章:
- C++中的cin.ignore()函数不适用于整个流
- 在while循环中输入带有std::cin的字符串后,控制台会输出大量胡言乱语
- 如果我std::dynamic_pointer_cast并且底层dynamic_cast的结果为null,那么返回的sh
- Problems with std::cin.fail()
- 如何在 c++ 中'NULL'字符串
- c++使用foreach使数组为null
- 当使用通配符和null指针调用函数时,对输出的说明
- 当字段可以为null时,如何使用C++接口在Avro中写入数据
- 如何在映射中返回null
- 由cin中的字符串中未捕获空白引起的分割错误
- 在C++中使用Cin,我如何在1行中输入
- 将 cin 限制为只有一个
- cin >> int 给定一个字符串将 int 赋值为 0
- istream std::cin如何修改自定义istream缓冲区
- C++ 将 CIN 值存储到任何类型的数组中
- 为什么无论你输入什么,这"while(cin.get(str,3))"只运行一次?
- ios_base::sync_with_stdio(false); cin.tie(NULL);
- 如何将 cin>> 与初始化的字符* 一起使用为 NULL
- cin函数是否添加了在输入结束时终止的null
- 如何解释ios_base::sync_with_stdio(false);cin.tie (NULL);