【C++】快读&快写模板及火车头优化代码

快读快写简介

快读快写,顾名思义,就是提升输入和输出的速度。在这里简单介绍一下几种输入输出的优劣。

  • C++ cin / cout 输入输出:优点是读入的时候不用管数据类型,但是缺点就是比scanf/printf慢一些。

这里给一个关同步流的代码,可以显著优化 cin / cout 的速度:

ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);

需要注意的是,关了同步流之后就不能再用 scanf / printf 了。

  • C scanf / printf 输入输出:与 C++ 对比,比 cin / cout 快一些,但使用方法细节比较多,容易出锅。

  • 快读/快写:只能处理整数读入 / 输出,但是要比标准输入输出函数都快得多。

    • 一般来讲,快读快写在针对数据量不是很大的输入输出的时候显得比较无力,但如果是多组数据或者输入量较多,就可以显著提升效率。

    • 开不开inline差不多。

    • 还有一种更快的fread()函数型快读,比一般的快读都要快,这里主要给这种。

快读快写代码

char *p1, *p2, buf[N];
#define nc() (p1 == p2 && (p2 = (p1 = buf) +\
fread(buf, 1, N, stdin), p1 == p2) ? EOF : *p1 ++ )
LL read()
{
   
    LL x = 0, f = 1;
    char ch = nc();
    while (ch < 48 || ch > 57)
    {
   
        if (ch == '-') f = -1;
        ch = nc();
    }
    while (ch >= 48 && ch <= 57)
        x = (x << 3) + (x << 1) + (ch ^ 48), ch = nc()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星河依旧长明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值