1.C++IO流的同步和绑定

C++中,cincout的速度其实不并不慢,C++中的流的IO速度相当的快,其速度与初始设定的缓存区大小和硬盘的IO速度有关。

但在C++中,为了兼容C的IO(scanfprintf),cincout被设置为与C的IO同步,这样导致cincout的速度不如scanfprintf快。

另外,在默认情况下,标准输入设备(cin)与标准输出设备(cout)绑定在一起,它保证在调用输入之前已经刷新输出缓冲区,这样也会降低读取效率。

所以,我们可以手动取消他们与C语言IO的同步,并去掉cincout的绑定,加速读取,使cin的速度与scanf相差无几,甚至某些情况要快于scanf

注:在取消绑定后,使用scanfprintf可能会出现问题,比如读取失败或者提前输出的问题,请不要再使用他们,不过可以使用getchargets等读入函数。

加速代码:

  // 取消C++ IO与C的同步
  std::ios::sync_with_stdio(false);
   
  // 取消cin和cout的绑定
  std::cin.tie(NULL);/*等价于cin.tie(0);*/

2. 快读挂

在读取大量整数时,无论是cin还是scanf,都比getchar的读取效率要慢上不少,我们可以使用getchar来模拟输入函数,在读取大量整数的时候效率会很高:

下面给出其中的一种实现方法:

  inline void read(int& x) {
  x = 0;
  char c;
  for (c = getchar(); c < '0' || c > '9'; c = getchar())
  ;
  for (; c >= '0' && c <= '9'; c = getchar())
  x = (x << 3) + (x << 1) + c - '0';
  }

3.交互式oj(如leetcode)的加速方法

将其放在solution类的上方即可,一般情况用不到。

  static auto __=[](){
  std::ios::sync_with_stdio(false);
  cin.tie(nullptr);
  return nullptr;
  }();
  //注意放在solution上面

(acm)C++加速输入的几种方法相关推荐

  1. python键盘输入数组_python 二维数组切割Python读取键盘输入的2种方法

    Python提供了两个内置函数从标准输入读入一行文本,默认的标准输入是键盘.如下: 1.raw_input 2.input raw_input函数raw_input() 函数从标准输入读取一个行,并返 ...

  2. java中像scanf一样多个输入_VB模拟键盘输入的N种方法

    VB模拟键盘输入的N种方法http://bbs.csdn.net/topics/90509805hd378发表于: 2006-12-24 14:35:39用VB模拟键盘事件的N种方法 键盘是我们使用计 ...

  3. 人民币符号输入的几种方法

    人民币符号输入的几种方法 直接利用键盘输入 ¥ shift+4 (键盘第二行数字,中文输入法) ¥ Alt+41892 (右侧小键盘数字,GBK,全角) ¥ Alt+0165 (右侧小键盘数字,Uni ...

  4. python二维数组换行输出_python 二维数组切割Python读取键盘输入的2种方法

    Python提供了两个内置函数从标准输入读入一行文本,默认的标准输入是键盘.如下: 1.raw_input 2.input raw_input函数raw_input() 函数从标准输入读取一个行,并返 ...

  5. java中从键盘输入的三种方法以及Console输入

    java中从键盘输入的三种方法: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStre ...

  6. Java 键盘输入的三种方法

    Java 键盘输入的三种方法 1.System.in和System.out方法:从控制台接收一个字符,然后将其打印出来 虽然此方式实现了从键盘获取输入的字符,但是System.out.read()只能 ...

  7. java数据输入的步骤_Java学习日志1.4 Scanner 数据输入的三种方法

    Scanner sc = new Scanner(System.in); /注意in 是InputStream的缩写,是字节输入流的意思. 整句话的含义就是: new 一个对象,接受从键盘输入的数据, ...

  8. Java | Java语言在Eclipse控制台输入的三种方法

    写在前面的内容,java控制台输入浅尝辄止即可 >>> 文章目录 三种方法比较一览图 方法一:in/out public static final InputStream in//静 ...

  9. n76e003引脚图_N76E003 复位引脚(P20)配置为输入的两种方法

    由于N76E003管脚比较少,17个标准通用管脚,另外还有一个只能做输入的引脚(RESET),在项目中就可能需要用到RESET引脚作为输入,那么问题来了,怎么配置RESET引脚当作输入呢?这里介绍两种 ...

最新文章

  1. android apk签名工具_关于keytool和jarsigner工具签名的使用小结
  2. 06. 为知笔记 -- 我的修改
  3. P3701 -「伪模板」主席树【网络流,最大流】
  4. 位置服务器管理器,查看 DIMM 位置
  5. 原生Js 两种方法实现页面关键字高亮显示
  6. vmware安装centos问题
  7. 上下伸缩代码_CQRS之旅——旅程4(扩展和增强订单和注册限界上下文)
  8. python网络爬虫 抓取金融分析师名单
  9. 金融数据分析与挖掘实战练习-1.9
  10. Spring Cloud 服务消费者 Feign (三)
  11. 存储过程与SQL语句如何选择
  12. 专家显身支招 教你如何选购高品质DDR2内存(例)
  13. 最新ECSHOP解闷商城系统+休闲娱乐EC购物商城源码
  14. 2015061403 - firebug下载地址
  15. zemax---System Explorer(系统选项)
  16. VBlog项目代码理解之前后端交互
  17. 移动端cpu天梯图2020_笔记本CPU排行天梯图2020
  18. android 实现ble蓝牙自动配对连接
  19. 有你智居告诉你,智能门禁是如何做到出入小区只需1秒钟的?
  20. win10彻底关闭windows defender的两种方法

热门文章

  1. java 页面输出一个页面_java学习之:一个完整页面输出信息的过程(以输出Doctor表中信息为例)...
  2. C++中正确使用PRId64
  3. 透析WINCE的控制面板
  4. java utf8 byte_byte以及UTF-8的转码规则
  5. 海量数据持久层解决方案_爱数AnyBackup重磅发布海量非结构化数据超可用解决方案...
  6. java游戏服务器面试_我做游戏开发这八年
  7. php的cookie变量作用,PHP语言中cookie的作用
  8. arcgis坡度结果有误或z因子前有感叹号
  9. Windows Workflow Foundation(WWF)介绍
  10. php源码查找替换,php 替换模板中的 PHP源码标签字符方法