cin关闭流同步的利弊与cout的endl使用

在算法题中涉及到大量数据读入的时候,通常建议大家避免使用cin读入数据而改用scanf,原因是scanf相对速度更快。

解决方法
1. cin效率低的原因一是在于默认cin与stdin总是保持同步,cin会把要输出的东西先存入缓冲区,进而消耗时间。通过关闭同步,可以有效提高cin效率;

2. 默认情况下cin绑定的是cout,每次执行<<的时候都要调用flush,进而增加IO负担,因此可以通过tie(0)解绑。

代码:

#include <iostream>
using namespace std;
 
int main(){
    ios::sync_with_stdio(false);
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
}


 关闭同步之后,cin与scanf的执行效率相差无几

注意事项
如果在同一个流上使用两组 I/O 函数(头文件<stdio.h>/<cstdio>和<iostream>)(例如stdin流同时关联cin与scanf),那么最好让它们保持同步;

如果任何一个流只使用一个 I/O 系列,则可以关闭同步(比如在各自涉及单独的流的情况下,可以同时使用scanf与cin)。

保险起见,关闭同步之后请不要同时使用C与C++的读写方式,避免不必要的麻烦。

  • 5
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值