c++输入输出优化

C++编程中如果输入或输出信息较多,使用cin/cout会导致TLE超时,如何提升输入输出效率,以AC相关问题。
一、换行使用换行符‘\n’,不要使用endl
 endl除了换行还会刷新缓冲区,导致性能比较低,如果输出打印比较多,则会导致时间超时。‘\n’只换行,其不会刷新缓存区,所以效率高。
二、使用scanf/printf替代cin/cout
cin,cout效率低,是因为先把要输出的东西存入缓冲区,再输出,导致效率降低。
三、cin/cout优化
在程序开始处增加优化:
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);

ios::sync_with_stdio(false)

“是否兼容 stdio”的开关,C++ 为了兼容 C,保证程序在使用了 printf 和 std::cout 的时候不发生混乱,将输出流绑到了一起。这样配置相当于进行解除绑定操作,配置后要注意不能同时使用 std::cin/std::cout 和 scanf/printf。
tie(0)
在默认的情况下cin绑定的是cout,每次执行 << 操作符的时候都要调用flush,这样会增加IO负担。可以通过tie(0)(0表示nullptr)来解除cin与cout的绑定,进一步加快执行效率。
四、快读
在数据量较大的情况下,即使使用 C 语言提供的 scanf 函数也可能超时,此时需要 快读函数。快读使用 getchar 获得每一个字符,其效率比 scanf高。
int read(){
    int x = 0, f = 1;
    char c = getchar();
    while(c < '0' || c > '9'){
       if(c == '-'){
           f = -1;
       }
       c = getchar();
    }
    while(c >= '0' && c <= '9'){
       x = x*10+c-'0';
       c = getchar();
    }
    return x*f;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值