首页 > 其他分享 >关于C/CPP的快读

关于C/CPP的快读

时间:2023-11-27 22:37:24浏览次数:28  
标签:p3 void BufferIO char bufferedWriter 关于 CPP getchar

#include <cstdio>

class BufferIO {
public:
    template<typename T>
    auto operator>>(T& x);

    template<typename T>
    inline void unsigned_read(T& x);

    template<typename T>
    auto operator<<(T x);

    template<typename T>
    inline void unsigned_print(T x);

    ~BufferIO();

private:
    char io_stream[1000000]{};

    char bufferio[1000000]{};

    char bufferedWriter[1000000]{};

    char* p1 = bufferio;

    char* p2 = bufferio;

    char* p3 = bufferedWriter;

    char getchar();

    void putchar(char x);
};

char BufferIO::getchar() {
    if (p1 == p2 && (p2 = (p1 = bufferio) + fread(bufferio, 1, 1000000, stdin), p1 == p2)) {
        return EOF;
    }
    else {
        return *p1++;
    }
}

void BufferIO::putchar(char x) {
    *p3++ = x;
    if (p3 - bufferedWriter >= 1000000) {
        p3 = bufferedWriter;
        *p3++ = x;
    }
}

BufferIO::~BufferIO() {
    fwrite(bufferedWriter, p3 - bufferedWriter, 1, stdout);
}

template<typename T>
auto BufferIO::operator<<(T x) {
    int len = 0;
    if (x < 0) {
        x = -x;
        putchar('-');
    }
    while (x) {
        io_stream[len++] = x % 10 + '0';
        x /= 10;
    }
    while (len--) {
        putchar(io_stream[len]);
    }
}

template<typename T>
auto BufferIO::operator>>(T& x) {
    x = 0;
    int f = 1;
    char c = getchar();
    while (c < '0' || c > '9') {
        if (c == '-') {
            f = -1;
        }
        c = getchar();
    }
    while (c >= '0' && c <= '9') {
        x = (x << 3) + (x << 1) + (c ^ 48);
        c = getchar();
    }
    x *= f;
}

template<typename T>
void BufferIO::unsigned_print(T x) {
    int len = 0;
    while (x) {
        io_stream[len++] = x % 10 + '0', x /= 10;
    }
    while (len--) {
        putchar(io_stream[len]);
    }
}

template<typename T>
void BufferIO::unsigned_read(T& x) {
    x = 0;
    char c = getchar();
    while (c < '0' || c > '9') {
        c = getchar();
    }
    while (c >= '0' && c <= '9') {
        x = (x << 3) + (x << 1) + (c ^ 48), c = getchar();
    }
}

标签:p3,void,BufferIO,char,bufferedWriter,关于,CPP,getchar
From: https://www.cnblogs.com/HuXinIO/p/17860679.html

相关文章

  • 关于python中pip安装库过程中报错的解决办法
    晚上使用flask框架搭建web服务,启动后报错如下:WARNING:Thisisadevelopmentserver.Donotuseitinaproductiondeployment.UseaproductionWSGIserverinstead. 经过搜索大法,发现是因为在开发环境中,Flask应用程序是使用内置的服务器(如SimpleServer或Lighttpd)运......
  • 关于es中集群,节点,分片和副本的理解
    集群页面中每一个对象就是一个集群节点集群中包含许多es实例,其中一个es实例就是一个节点节点也分许多功能分片和副本该例子中分片数为9,副本数为1数据节点就是Node注意:a和b是同样的数据,a为主分片,b为副本分片,但是同样的数据不能放在相同的节点上面(比如a1和b1不能),......
  • keycloak~关于session idle和session max的解释
    keycloak可以帮助我们实现这个功能:用户token每5分钟失效一次,失效后通过refresh_token来换新的token,而refresh_token每30天失效一次,但如果用户3天都没有任何操作(就是没有用refresh_token去换新的token),那么3天后也让refresh_token失效,用户需要从新去登录。先说refresh_token过期时......
  • 关于Java内存模型
    (面试被问到,想到之前有个笔记,整理一下发出来。)内存模型可以理解为在特定的操作协议下,对特定的内存或高速缓存进行读写访问的过程抽象。不同架构的物理机器可以拥有不一样的内存模型,而Java虚拟机也有自己的内存模型。Java内存模型(JavaMemoryModel,JMM)是来屏蔽各种硬件和操作系统......
  • 关于微信小程序中如何实现数据可视化-echarts动态渲染
    移动端设备中,难免会涉及到数据的可视化展示、数据统计等等,本篇主要讲解原生微信小程序中嵌入echarts并进行动态渲染,实现数据可视化功能。基础使用首先在GitHub上下载echarts包地址:https://github.com/ecomfe/echarts-for-weixin/tree/master下载项目解压压缩包,将ec-canvas文......
  • Sb7:关于.net使用WCF过程中遇到的坑
    最近写了一个类似QQ升级的功能。使用wcf编写了一个服务端。 做了四个接口服务,可以根据软件编号查询所有版本号,可以根据版本查询所有待升级文件,远程获取升级文件。在做服务的时候原计划GetFile方法中采用异步同时传输,将大文件切割成多个模块进行传输,在客户端接收完后重新组包再......
  • 关于人工智能算法的深度思考(总结)
    1、神经元其实并不神奇,神奇的是它以某种相互联系的方式,可以在训练得到答案并核对答案后,立即对所走的路径上的权重进行更新(反向传播),更新的依据是答案误差大小,误差大则更新也大,误差小则更新就小。所走路径:所有单次训练被激活的神经元的组合。2、根据1,我们完全可以重新设计更好的神......
  • GPU部署llama-cpp-python(llama.cpp通用)
    title:GPU部署llama-cpp-python(llama.cpp通用)banner_img:https://cdn.studyinglover.com/pic/2023/08/a5e39db5abf0853e6c456728df8bd971.jpgdate:2023-8-623:01:00tags:-踩坑GPU部署llama-cpp-python(llama.cpp通用)通用流程我们的安装平台是Ubuntu20.04,Python3.......
  • 关于u-table 和el-table的问题相关
    解决方式:        在u-table中引入el-table中的el-table-column,修改el-table-column为u-table-column页面报错: vue.runtime.esm.js:619[Vuewarn]:Duplicatekeysdetected:'el-table_1_column_1'.Thismaycauseanupdateerror.foundin---><ElTableHead......
  • 一个关于用netty的小错误反思
    一个关于用netty的小认知在使用netty时,观看了黑马的netty网课,没想就直接用他的依赖了依赖如下<dependency><groupId>io.netty</groupId><artifactId>netty-all</artifactId><version>4.1.39.Final</version></dependency>不过幸运的是,我意识到了老师的没......