常用读入\输出优化

本文主要讲述常用的2种读入优化方法。
输出优化很少使用,在此简单提一下:也就是把输出的东西先放进字符串,再一次性puts\printf出去。提升不大,不常用。
首先当然需要先知道,scanf/printf比cin/cout快不少。
读入优化:

  1. getchar
    使用getchar一个一个读入字符,转化成数字。比scanf快一些。

    inline int read()
    {
        int f=1,x=0;//f是正负的标识
        char ch;
        do {
            ch=getchar();
            if(ch=='-')
                f=-1;
        } while(ch<'0'||ch>'9');
        do {
            x=x*10+ch-'0';
            ch=getchar();
        } while(ch>='0'&&ch<='9');
        return f*x;
    }

    2.fread
    fread将stdin里的内容读到字符串里,然后利用指针处理。
    首先定义指针和读入的数组:

    #define MAXB 1e7
    //定义读入最长的长度
    char    buf[MAXB], *cp = buf;

    接下来是读入:

    fread(buf,1,MAXB, stdin );//函数具体参数含义请善用搜索引擎

    最后是从中处理出数据(现在这个函数是为了处理int整型而设计)

    void rd( int &x )
    {
        x=0;
        while (*cp<'0'||'9'<*cp)
            cp++;
        while ('0'<=*cp&&*cp<= '9') {
                x=x*10+*cp-'0';
                cp++;
            }
            //cp是当前指针,指向buf数组中目前要读的位置
    }

原文地址:https://www.cnblogs.com/yyy2015c01/p/8455819.html

时间: 2024-08-23 09:20:07

常用读入\输出优化的相关文章

读入输出优化_C++

当我们考试时遇到大量的读入或者输出时,这些代码会耗费许多运行程序的时间,导致TL 本来 log2n 的算法因为读入被卡成线性的就太不划算了,所以我们这里要采用读入输出优化 getchar 和 putchar 是最快的读入输出方式,变量名尽量用一些不是很常用的,以免冲突 1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring> 4 #include<cmath> 5 #include<iostr

读入输出优化模板

因为是直接调用系统底层所以速度会很快... 1 long long read(){ 2 long long x=0,w=1; 3 char c=0; 4 for (c=getchar();c<'0'||c>'9';c=getchar()) {if (c=='-') w=-1;} 5 for (;c>='0'&&c<='9';c=getchar()) x=(x<<3)+(x<<1)+c-'0'; 6 return x*w; 7 } 读入 1 v

[读入输出优化]4.15正确的打开方式

读入输出优化 大概是那种写了不一定有用,但是好歹算是个心理安慰的东西 考试题太难不知该从何下手 先写个读入输出优化压压惊 没啥好讲解的部分,getchar,putchar是最快的读入输出方式 剩下的背模版就行 提示:名字取个别那么常见的就行 /*代码部分*/ int read(){ int x,f=1; char ch; while (ch=getchar(),ch<48||ch>57) if (ch=='-') f=-f; x=ch-48; while (ch=getchar(),ch>

网络赛用MOD-含读入输出优化模板和几个常用函数

之前一场比赛被读入优化坑了,一怒之下写了MOD MOD说明: 加入读入和输出优化,加快了速度 输入输出本地运行添加颜色区分 加入了一些常用函数,随机数范围扩大至0~2^64-1 读入与输出优化实测结果: 与scanf相比 整数类型速度提高一倍左右 浮点型速度提高5~7倍 字符及字符串类型提高1/10 与printf相比 整数类型速度提高1/5~2倍(数字越少速度越快)左右 浮点型速度不变 字符及字符串类型提高1/10 下方贴代码 <span style="font-size:12px;&q

读入输出优化

代码 #include<iostream>#include<cstdio>#include<cstring>#include<string>#include<algorithm>#include<cctype>#include<cmath>#include<cstdlib>#include<queue>#include<ctime>#include<vector>#inclu

读入/输出优化

void read(int &x) { int f=1;x=0;char s=getchar(); while(s<'0'||s>'9'){if(s=='-')f=-1;s=getchar();} while(s>='0'&&s<='9'){x=x*10+s-'0';s=getchar();} x*=f; } void print(int x) { if(x<0)putchar('-'),x=-x; if(x>9)print(x/10); put

【墙裂推荐】读入优化和输出优化

读入优化: 1 inline int read() 2 { 3 int X=0,w=1; char ch=0; 4 while(ch<'0' || ch>'9') {if(ch=='-') w=-1;ch=getchar();} 5 while(ch>='0' && ch<='9') X=(X<<3)+(X<<1)+ch-'0',ch=getchar(); 6 return X*w; 7 } 输出优化: 1 inline void write

读入优化 &amp;&amp; 输出优化

qwq算是一个板子随笔吧 快读我在某大佬的博客中找到了更短的代码 但是这个写习惯了就改不了了qwq 其实是我不想改 废话好多 直接贴代码 1 //读入优化 2 inline int read(){ 3 char ch, c; 4 int res; 5 while (ch = getchar(), ch < '0' || ch > '9') c = ch; 6 res = ch - 48; 7 while (ch = getchar(), ch >= '0' && ch &

读入优化&amp;输出优化

读入优化:读入优化只是针对整数,由于getchar()读字符非常的快,所以采用getchar()来进行读入,下设输入的数为x 负数处理:用一个标志变量f,开始时为1,当读入了'-'时,f变为-1,最后x*=f即可 绝对值部分处理:getchar()每次只能读一位,所以每当读了一位s时,x*=10,为s留位置,由于s为字符,需要减去'0'才能转为整数即:x=x*10+s-'0' 关于细节: 很多时候有多余的空格或者其它的一些无关字符输入,处理时需要注意排除 代码: 1 void read(int