read&write(输入输出流)【模板】

为什么会快

C++中getchar的速度是比scanf快很多的
fread其实是输入中最快的
只不过不会用
然后输出自然也是putchar更胜一筹
fwrite也是输出中最快
只不过也不会用

Code:

注释版:

#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
inline void read(int &f) {
//地址符,也就是说如果read(n),n的值会随着f的值变换而变换
    f=0;int flag=1; char c=getchar();
    //flag判断正负
    while(!isdigit(c)) {if (c=='-') flag=-1; c=getchar();}
    while(isdigit(c)) {f=(f<<3)+(f<<1)+c-48; c=getchar();}
    //isdigit(c)用来判断(int)c是否在范围48~57之间,是则return 1 else return 0
    f*=flag; return;
}
void write(int x) {
    if(x>9) write(x/10);putchar(x%10+48);return;
}
void write_(int x) {
    if(x<0)putchar('-'),x=-x;//判断负数
    write(x); putchar(' '); return;
}
void writeln(int x) {
    if(x<0)putchar('-'),x=-x;//判断负数
    write(x); putchar('\n'); return;
}
int main() {
    int x;read(x);
    write_(x); writeln(x);
    write_(x); write(x)
}

无注释版本

#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
inline void read(int &f) {
    f=0;int flag=1; char c=getchar();
    while(!isdigit(c)) {if (c=='-') flag=-1; c=getchar();}
    while(isdigit(c)) {f=(f<<3)+(f<<1)+c-48; c=getchar();}
    f*=flag; return;
}
void write(int x) {
    if(x>9) write(x/10);putchar(x%10+48);return;
}
void write_(int x) {
    if(x<0)putchar('-'),x=-x;
    write(x); putchar(' '); return;
}
void writeln(int x) {
    if(x<0)putchar('-'),x=-x;
    write(x); putchar('\n'); return;
}
int main() {
    int x;read(x);
    write_(x); writeln(x);
    write_(x); write(x)
}

猜你喜欢

转载自blog.csdn.net/qq_39798042/article/details/82025244
今日推荐