加速cin

具体是:

C++为了让cin cout和scanf printf 同时使用时不产生混乱,所以c++用一个缓冲区来同步c的标准流, 
而std::ios::sync_with_stdio(false)可以关闭这一个同步,让cin和cout不经过缓冲区;

tie()函数是把两个stream绑定到一起,flush()是把缓冲区的数据输出到文件,而cin和cout是默认绑定在一起的,
每次使用都会调用flush(), 而cin.tie(nullptr)可以解除这个绑定;

cin和cout默认绑定在一起,是为了防止cin出现在cout之前,在绑定后,
每次cin都会先把缓冲区的数据刷新到输出文件中

顺便补充下关于io流的知识:
在c++中,io操作都是有io对象来实现的,每个io对象又管理一个缓冲区,用于存储程序读写的数据。
只有缓冲区被刷新的时候缓冲区中的内容才会写入真实的文件或输出设备上。
那么,什么情况下会刷新输出缓冲区呢,有如下五种情况:
1.程序正常结束。作为main返回工作的一部分,将清空所有的输出缓冲区。
2.在一些不确定的时候,缓冲区可能已经满了,在这种情况下,缓冲区将会在写下一个值之前刷新。
3.用操纵符显示地刷新缓冲区,如用endl。
4.在每次输出操作执行完毕后,用unitbuf操纵符设置流的内部状态,从而清空缓冲区。
5.可将输出流与输入流关联起来,在读输入流时将刷新其关联的输出缓冲区。
所以关闭流同步后 注意要自己刷新缓冲区
////    ios::sync_with_stdio(0);
////    cin.tie(0);

全部评论

相关推荐

争当牛马还争不上
码农索隆:1.把简历改哈 2.猛投,狠投 3.把基础打牢 这样你在有机会的时候,才能抓住
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-01 11:27
点赞 评论 收藏
分享
风中翠竹:真的真的真的没有kpi。。。面试官是没有任何kpi的,捞是真的想试试看这个行不行,碰碰运气,或者是面试官比较闲现在,没事捞个人看看。kpi算HR那边,但是只有你入职了,kpi才作数,面试是没有的。
双非有机会进大厂吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务