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

  • C++ cin/cout 输入输出
    优点是读入的时候不用管数据类型,也就是说不用背scanf/printf的%d、%c、%lld等繁琐的东西,但是缺点就是比scanf/printf慢一些。

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

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

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

  • 开不开inline差不多。

  • 还有一种更快的fread()函数型快读,比一般的快读都要快,但是模板不太好理解,所以不加介绍。

  • 下面是代码:

快读函数

点击查看代码
inline int read(){
    int re=0;bool sign=false;char ch=getchar();
    for(;ch<'0'||ch>'9';ch=getchar()) if(ch=='-') sign=true;
    for(;ch>='0'&&ch<='9';ch=getchar()) re=(re<<1)+(re<<3)+(ch^48);
    return sign?~re+1:re;
}

快写函数

点击查看代码
void write(int out){
    if(out<0) putchar('-'),out=-out;
    if(out>9) write(out/10);
    putchar(out%10+'0');
    return;
}