加速C++的读写

今天在LeetCode刷题,看到高手的答案中有下面这行代码,了解了一下这些代码的含义,发现了提高C++读写速度的方法。

static auto speedup = [](){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    return nullptr;}();

C++中的输入输出流为std::cin和std::cout,与之对应的C中的输入输出分别为scanf()和printf()。不少人有误解说C++的输入输出比C的慢,然而这时错误的认知,玄机就体现在以上代码中。C++为兼容C,并保证输入输出的线程安全,将C++的输入输出流与C的绑定在了一起,也就是说C++并不维护缓存区,而是将保存在C的缓存区中,这样每次IO都会调用一次flush(),因此导致开销较大。

而cin.tie()默认将输入绑定到cout,这样每一行输入都能够被打印出来。而将cin绑定到空指针,能够进一步提高输入的速度。

参考资料

  1. cpp-reference: sync_with_stdio
  2. cin.tie与sync_with_stdio加速时输入输出
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值