读入优化

Posted utopia999

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了读入优化相关的知识,希望对你有一定的参考价值。

卡常必备,平时要多写。万一复杂度不对卡常卡过去了呢。
劣质版:

#include<cstdio>
char gcbuf[1<<28];
inline char fgc() {
    static int cur = 0, lim = 0;
    cur++;
    if(cur >= lim) {
        lim = fread(gcbuf, 1, 1<<28, stdin);
        cur = 0;
    }
    return gcbuf[cur];
}
inline int read() {
    int a = 0, c = fgc(), w = 1;
    for(; c < ‘0‘ || c > ‘9‘; c = fgc()) if(c == ‘-‘) w = -1;
    for(; c >= ‘0‘ && c <= ‘9‘; c = fgc()) a = a * 10 + c - ‘0‘;
    return a * w;
}

优质版:

#include<cstdio>
#include <sys/mman.h>
struct IObuf{
    char *buf;
    IObuf() : buf((char*)mmap(0, 1<<28, PROT_READ, MAP_PRIVATE, fileno(stdin), 0)) {}
    operator int(){
        int ret = 0, flag = 0;
        while (*buf < 48)   if (*buf++ == 45)   flag = 1;
        while (*buf > 32)   ret = ret*10+*buf++-48;
        return flag ? -ret : ret;
    }
} reader;

以上是关于读入优化的主要内容,如果未能解决你的问题,请参考以下文章

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

读入优化

读入输出优化

奇技淫巧:NOIP的读入优化

使用 C++ 反转句子中的每个单词需要对我的代码片段进行代码优化

如何优化C ++代码的以下片段 - 卷中的零交叉