(acm)C++加速输入的几种方法

Posted C和C加加

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(acm)C++加速输入的几种方法相关的知识,希望对你有一定的参考价值。

来源:blog.dalao.icu/archives/29.html


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等读入函数。

加速代码:

(acm)C++加速输入的几种方法

2. 快读挂

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

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

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

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

简单分享快乐学习,如有错误请多包涵!


PS:如果没有你的关注,那我所做的将毫无意义!欢迎分享点赞在看

以上是关于(acm)C++加速输入的几种方法的主要内容,如果未能解决你的问题,请参考以下文章

Linux开机自动加载的几种方法

使用 OpenMP 在 C、C++ 中并行化嵌套 for 循环的几种方法之间的区别

Python调用C++程序的几种方法

浅析XSS的几种测试方法

C++中标志位的几种实现方法

a标签调用js的几种方法