博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cin效率
阅读量:3958 次
发布时间:2019-05-24

本文共 577 字,大约阅读时间需要 1 分钟。

今天在刷LeetCode的时候,发现最快的代码和我的算法一模一样,但是多了两行:

std::ios::sync_with_stdio(false);std::cin.tie(0);

我把这两行代码加到我的代码中,发现果然快了不少。所以我就好奇,这两行代码究竟是用来干嘛的呢?

查了一下才知道:

  1. 首先,C++为了保证与C的兼容,所以将cin和stdin(如scanf)的流进行了同步,以保证你在代码中混用这两个函数并不会出现任何问题(cout和stdout同理)。但这个同步会大大加大cin函数的耗时。
    而std::ios::sync_with_stdio(false)的作用就是,将iostream与stdio解绑。解绑之后,cin和cout的速度将会大大提升。
    但要注意的是,解绑之后,一定不要将iostream与stdio混用! 否则可能会出现问题。
  2. 其次,cin和cout也进行了绑定,关于这一点,我还并不是很了解。只是知道进行了绑定,然后用std::cin.tie(0)进行解绑,可以运行更快。
  3. 最后,由于某些我不太了解的原因,scanf仍然会比cin快一些,我认为可能是因为,scanf需要你指定类型,而cin可以自己判断类型,所以会慢一些。所以当有大量io操作的时候,如果解绑后速度仍然不尽如人意,不如将iostream都改成stdio试试。

转载地址:http://jxxzi.baihongyu.com/

你可能感兴趣的文章
东北赛选拔教训
查看>>
hash
查看>>
涨姿势了:求两个分子的最大公倍数
查看>>
快速幂
查看>>
vector.reserve and resize &&vector与map结合
查看>>
最短路
查看>>
最长公共子序列
查看>>
计算几何
查看>>
求解方程
查看>>
太弱了。。水题
查看>>
位运算(含应用)
查看>>
野指针与空指针
查看>>
图文混排效果
查看>>
urllib2.urlopen超时问题
查看>>
Choosing a Machine Learning Classifier
查看>>
魏兴国:深入浅出DDoS攻击防御
查看>>
使连续的参考文献能够中间用破折号连起来
查看>>
Discover Feature Engineering, How to Engineer Features and How to Get Good at It
查看>>
36辆车,6条跑道,无计时器,最少几次比赛可以选出前三
查看>>
matlab2012b与matlab7.1执行set(gca,'Yscale','log')之后画到的直方图结果居然不同
查看>>