记录一下c++中std::ios::sync_with_stdio(false);的问题

C++中sync_with_stdio(false)是一种提升cin、cout效率的手段,使用C语言中的格式输入输出(scanf / prinrf)比C++中的标准输入输出(cin / cout)要快很多,在代码里加上std::ios::sync_with_stdio(false) 这个语句后,cin(cout)速度就会变得和scanf(printf)一样快

本质上是一个iostream与stdio流的同步的开关,C++为了兼容C,保证程序在使用了std::printf和std::cout的时候不发生混乱,将输出流同步到了一起。cin和cout要与stdio同步,中间会有一个缓冲,所以导致cin,cout语句输入输出缓慢,这时就可以用这个语句,取消cin,cout与stdio的同步,说白了就是提速,效率基本与scanf和printf一致。

#include<iostream>
#include<windows.h>
using namespace std;
int main()
{DWORD start_time = GetTickCount();{//此处为被测试代码/*sync_with_stdio(bool turnc);,其中 turnc 默认为 true*/std::ios::sync_with_stdio(false);for (int i = 0; i < 100000; i++){cout << i << endl;}}DWORD end_time = GetTickCount();cout << "The run time is:" << (end_time - start_time)*1.0 / 1000 << "s!" << endl;//输出运行时间system("pause");return 0;
}

但是用了sync_with_stdio(false)之后不能与printf和scanf同用,否则会出错,这就涉及到sync_with_stdio(false)的局限性。

printf( ) 用法:将变量的内容输出到显示器上

scanf( )用法:通过键盘将数据输入到变量中

iosream与stdio流的对应关系,C头文件对应 #include <stdio.h>

C stream iostream
stdin cin
wcin
stdout cout
wcout
stderr cerr
wcerr
clog
wclog
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);

同时在默认的情况下cin绑定的是cout,每次执行<<操作符的时候都要调用flush,这样会增加IO负担。可以通过tie(0)来解除cincout的绑定,进一步加快执行效率。

C++之sync_with_stdio(false)相关推荐

  1. std::ios::sync_with_stdio(false);

    这句语句是用来取消cin的同步,什么叫同步呢?就是iostream的缓冲跟stdio的同步.如果你已经在头文件上用了using namespace std;那么就可以去掉前面的std::了.取消后就c ...

  2. 拾趣——ios::sync_with_stdio(false)详解(提高代码运算速度)

    本篇文章核心意思:在编程时cin(cout)比scanf(printf)慢,在代码里加上ios::sync_with_stdio(false) 这个语句后,cin(cout)速度就会变得和scanf( ...

  3. std::ios::sync_with_stdio(false)的运用

    c++中cin,cout效率比较低,是因为先把要输出的东西存入缓冲区与C语言中的stdio同步后,再输出,导致效率降低,而这段语句的作用是取消缓冲区同步,直接使用,由此可节省时间,使效率与scanf与 ...

  4. ios::sync_with_stdio(false)的作用

    默认的时候,cin与stdin总是保持同步的,也就是说这两种方法可以混用,而不必担心文件指针混乱, 所以一般会用ios::sync_with_stdio(false)来取消cin与stdin的同步,从 ...

  5. 关于std::ios::sync_with_stdio(false)

    std::ios::sync_with_stdio(false); 很多C++的初学者可能会被这个问题困扰,经常出现程序无故超时,最终发现问题处在cin和cout上,(甚至有些老oier也会被这个问题 ...

  6. leetcode练习——数组篇(1)(std::ios::sync_with_stdio(false);std::cin.tie(nullptr);)

    题号1. 两数之和: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复 ...

  7. C++ 里利用 std::ios::sync_with_stdio(false) 解决TLE问题

    2018-1-23 关于用C++里面的cin读取数据,我们都知道它的速度相对于C里面的scanf是比较慢的... 首先,我随机生成了10000000个整数 #include<stdio.h> ...

  8. C++输入输出流加速器,关闭同步流,ios::sync_with_stdio(false)和 cin.tie(0)

    leetcode练习时,总会发现运行时间短的代码都会有类似: static int x=[](){std::ios::sync_with_stdio(false);cin.tie(NULL);retu ...

  9. 关于C++中ios::sync_with_stdio(false)

    粘贴自:https://blog.csdn.net/weixin_44015865/article/details/84974373 还是不要用了,做ZOJ-4016(URL: http://acm. ...

  10. 关于ios::sync_with_stdio(false);和 cin.tie(0)加速c++输入输出流

    原文地址:http://www.hankcs.com/program/cpp/cin-tie-with-sync_with_stdio-acceleration-input-and-output.ht ...

最新文章

  1. 【转】android错误 aapt.exe已停止工作的解决方法
  2. 浅谈25种设计模式(4/25)(此坑未填)
  3. 手把手教你分析MySQL死锁问题,十分钟看完文章下次轻松完成不加班
  4. 【转】目录 aspnet_client是什么?
  5. 如何使用小数据集对大模型进行微调(迁移学习)-微迁移
  6. 英伟达吞并Arm失败!英美欧盟一齐干涉,老黄还要给孙正义12.5亿美元分手费
  7. 零基础如何学好Python?Python有哪些必须学的知识?
  8. 【东软实训】SQL多表链接
  9. c# 去除转义符号_c#语法
  10. 微信公众号 模版消息 跳转到小程序报错{ errcode: 40013, errmsg: 'invalid appid hint: [cC6RwA09011295]' }
  11. node npm包安装 save和save-dev的区别
  12. android 仿支付宝菜单_这个 Android 几乎放弃的设计,iOS 要用上了?
  13. 如何查看 Linux是32位还是64位?
  14. java 对象查找_通过Java中的参数集查找最合适的对象
  15. 话里话外:中小型装备制造企业竞争优势构建之路
  16. php的public、protected、private三种访问控制模式的区别
  17. deepin下安装QT
  18. 计算机关机时间设置方法,电脑如何设置定时关机 电脑定时关机设置方法
  19. Latex 对号和叉号的
  20. 计算机毕业设计如何制作电子商务网站怎么制作购物网站计算机课程设计电子商城做什么(PHP-ASP.NET-c#-JavaWeb-SSM-SSH-J2EE-springBoot

热门文章

  1. you don't have permission to access / on this server(Apache Server权限访问问题)
  2. 如何选择源代码加密软件
  3. 几道经典递归算法案例
  4. 计算机会计综合作业,东财《会计信息系统》综合作业答卷
  5. 使用阿里云OSS实现图片上传案例
  6. Kad算法模拟测试程序
  7. 如何解决抽样调查过程中所面临的难点和问题?——以政治学研究为例
  8. 【它山之玉】在申请教职中“再造”自己-科学网马臻
  9. c++中的fork函数_fork函数
  10. 小米/红米手机,刷入第三方recovery(红米5 plus为例)