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

点击蓝字

55ebd287af03c1d99ae538820ce8766f.png

关注我们

来源于网络,侵删

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

加速代码:

83ad931f94b0f79f86f06f9f6d31c8e8.png

2. 快读挂

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

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

ba4ed348599740b2fb103530f68fc37c.png

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

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

5bdd32f06995b90edf8507eb48d703eb.png

 
 
 
 

d4bd122cbddeb2f16e9b0b7fa3ac57ea.gif

如果你年满18周岁以上,又觉得学【C语言】太难?想尝试其他编程语言,那么我推荐你学Python,现有价值499元Python零基础课程限时免费领取,限10个名额!
▲扫描二维码-免费领取

895262202ea9d609906860cb6c9ddf59.gif

戳“阅读原文”我们一起进步

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值