1. 程式人生 > >常用讀入輸出優化

常用讀入輸出優化

print 索引 getchar() 數組 printf 定義 max fine 一個

本文主要講述常用的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數組中目前要讀的位置
    }

常用讀入\輸出優化