用sync_with_stdio()有什么副作用么?

林大勇 2014-06-01 07:02:44
之前看到有同学在程序的开头用sync_with_stdio(false)。

百度了一下,是这样的结果---【原来而cin,cout之所以效率低,是因为先把要输出的东西存入缓冲区,再输出,导致效率降低,而这段语句可以来打消iostream的输入输出缓存,可以节省许多时间,使效率与scanf与printf相差无几,还有应注意的是scanf与printf使用的头文件应是stdio.h而不是iostream。】


我想问下使用sync_with_stdio()函数有什么副作用么?


谢谢~
...全文
1213 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_37659779 2017-02-25
  • 打赏
  • 举报
回复
最好别用,如果cin比scanf好的话,ACM选手为啥都用的是scanf呢
qq_26771769 2016-12-02
  • 打赏
  • 举报
回复
static bool sync_with_stdio(bool __sync = true);
QASWINE 2016-07-18
  • 打赏
  • 举报
回复
cin不能和scanf,sscanf, getchar, fgets之类同时用了,否则就可能会导致输出和预期的不一样。
XY20130630 2016-02-07
  • 打赏
  • 举报
回复
#include <iostream> #include <cstring> using namespace std; string a,b; inline int in(){ int ans=0; char x=getchar(); while(x<'0'||x>'9')x=getchar(); while(x>='0'&&x<='9'){ans=ans*10+x-'0';x=getchar();} return ans; } int main(){ ios::sync_with_stdio(false); cin>>a>>b; cout<<a<<endl<<b<<endl; int c,d; c=in();d=in(); cout<<c<<" "<<d<<endl; return 0; } 输入“a b 1 1”,似乎无法读入两个整数。
will_lai 2014-06-01
  • 打赏
  • 举报
回复
引用 1 楼 supermegaboy 的回复:
那段解释是胡说,根本不知道这个函数干嘛用的。 iostream默认是与stdio关联在一起的,以使两者同步,因此消耗了iostream不少性能,设置为false后,不再同步了,iostream的性能提高了很多倍。
求高人更详细的解说
飞天御剑流 2014-06-01
  • 打赏
  • 举报
回复
那段解释是胡说,根本不知道这个函数干嘛用的。 iostream默认是与stdio关联在一起的,以使两者同步,因此消耗了iostream不少性能,设置为false后,不再同步了,iostream的性能提高了很多倍。

64,439

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧