在竞赛中,遇到大数据时,往往读文件成了程序运行速度的瓶颈,需要更快的读取方式。相信几乎所有的C++学习者都在cin机器缓慢的速度上栽过跟头,于是从此以后发誓不用cin读数据。还有人说Pascal的read语句的速度是C/C++中scanf比不上的,C++选手只能干着急。

其实cin慢是有原因的,其实默认的时候,cin与stdin总是保持同步的,也就是说这两种方法可以混用,而不必担心文件指针混乱,同时cout和stdout也一样,两者混用不会输出顺序错乱。正因为这个兼容性的特性,导致cin有许多额外的开销,如何禁用这个特性呢?只需一个语句std::ios::sync_with_stdio(false);,这样就可以取消cin于stdin的同步了。程序如下:

const int MAXN = 10000000;int numbers[MAXN];void cin_read_nosync()
{freopen("data.txt","r",stdin);std::ios::sync_with_stdio(false);for (int i=0;i<MAXN;i++)std::cin >> numbers[i];
}

取消同步后效率究竟如何?经测试运行时间从6.38秒锐减到了2.05秒,与scanf效率相差无几了!有了这个以后可以放心使用cin和cout了。

cin/cou效率太慢?试一下 ios::sync_with_stdio(false);相关推荐

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

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

  2. 解析 static auto x = []() { std::ios::sync_with_stdio(false);std::cin.tie(nullptr);return 0;}()

    前言 这两天在LeetCode上刷题的时候看见有好几个速度排名第一的代码中都有一段类似的代码,如下: static const auto io_sync_off = []() {// turn off ...

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

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

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

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

  5. 关于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 ...

  6. 【C++】ios::sync_with_stdio(false) 与 cin.tie(nullptr) 加速 IO

    目录&索引 一.前言 题目 二.ios::sync_with_stdio(false) 三.cin.tie(nullptr) 四.小结 一.前言 之前写题遇到大数据量(cin.cout 数据量 ...

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

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

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

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

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

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

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

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

最新文章

  1. 棋盘最短路径 python_Dijkstra 最短路径算法 Python 实现
  2. HK2000 V2版本 GPRS通讯串口说明
  3. 学完java学swift_前言最近学完Swift之后一直没有机会实战,发现由于Swift发展历史原因,目前网上大部分的算法都是使用C、Java或其他语言实现的,几乎没有使用Swift实...
  4. Flex4/Flash多文件上传(带进度条)实例分享
  5. oracle end backup,oracle-backup-hot backup
  6. CSS3 pointer-events的应用
  7. (转)海岸线提取完成, 海浪排岸效果
  8. mysql里面的页面筛选_【mysql】像很多网站(比如电商)里的筛选功能一般是如何实现的?...
  9. ASP.NET 网站管理工具“安全”选项卡为什么打不开?
  10. rocketmq同步消息,异步消息
  11. 面试必掌握的Mysql的11个问题
  12. java两级缓存框架J2cache
  13. 傅里叶变换概念及公式推导
  14. 热血传奇C++版官网
  15. c语言的fprintf函数的用法,fprintf 和fscanf 函数
  16. 如何加强大数据安全管理和防护
  17. 1到1000的奇数和偶数和
  18. 中望3D 2022 基准平面
  19. 野火stm32mini第⑤章----------------中断
  20. 谷歌地图启用全新卫星图:细节更清晰,色彩更丰富

热门文章

  1. vscode调试配置和任务配置
  2. 华为公司大数据中台架构分享
  3. ZZNU2141: 2333
  4. gds文件 导出_cadence virtuoso 批量导出gds方法
  5. AI弄潮!深圳第一高楼智能访客系统“刷脸”通行
  6. 关于MMORPG多人对战中热点问题的解决思路讨论
  7. HY-SRF05 五针超声波测距模块 在stm32f4上实现 附代码 个人经验
  8. 破解Excel工作表密码
  9. 迅雷方舟与花瓣:不一样的“瀑布流”
  10. html等待,休眠代码,HTML DOM closest()用法及代码示例