解决cin、cout效率远低于scanf、printf的问题

简介: ac算法时cin和cout效率过慢

用C++ iostream.h中cin、cout书写十分方便,却存在效率低的问题,耗时往往是stdio.h中scanf、printf的好几倍。尤其是当输入、输出数据量较大时,经常会出现Time Limit Exceeded的情况。

但使用scanf输入字符串就比较麻烦,例如一个string类型字符串,必须经过转换:

string s;//声明
s.resize(11);//限定大小
scanf("%s", &s[0]);//输入
在PAT刷题时,偶然发现了一片新大陆,只需在main函数第一行加上:

std::ios::sync_with_stdio(false);

因为C++为了兼容C,保证程序在使用了std::printf和std::cout的时候不发生混乱,将输出流绑到了一起。这行代码的作用便是取消iostream与stdio的默认关联同步,取消同步后的iostream的性能倍增,能与stdio相差无几。只要注意不要再混用iosteam和stdio即可,否则可能会出现预料之外的错误。

还能进一步提升效率,再加上:

std::cin.tie(0);

因为默认的情况下,cin绑定的是cout,每次执行 << 时都要调用flush,增加了IO负担。可通过tie(0)解除cin与cout的绑定,进一步加快执行效率。

示例代码如下:

include

using namespace std;
int main()
{

ios::sync_with_stdio(false);
cin.tie(0);
// IO

}
有了这两个神器,以后就能愉快地使用cin、cout了。

参考大佬:https://www.jianshu.com/p/469b5632fb26

相关文章
|
开发工具
Typora上传Gitee图床成功,却无法显示图片?(image load failed)
博主构建好Typora-Picgo-Gitee图床之后,发现:虽然图片确实上传到Gitee仓库了,而且也能看到。但是Typora本地却看不到图片,提示(image load failed)
2050 0
Typora上传Gitee图床成功,却无法显示图片?(image load failed)
|
6月前
|
存储 监控 安全
📤 史上最全阿里云OSS图床搭建指南:告别本地存储,加速网站访问
阿里云OSS图床助力网站性能飞跃:图片加载从4.2秒缩至1.1秒,月流量成本降35%。结合CDN加速与智能优化,实现高速、安全、低成本的图片存储与分发,提升用户体验,释放创作潜能。
|
机器学习/深度学习 安全 数据挖掘
Swift语言的应用场景非常广泛
Swift语言的应用场景非常广泛
743 4
|
存储 算法 C语言
【C语言】深入浅出:C语言链表的全面解析
链表是一种重要的基础数据结构,适用于频繁的插入和删除操作。通过本篇详细讲解了单链表、双向链表和循环链表的概念和实现,以及各类常用操作的示例代码。掌握链表的使用对于理解更复杂的数据结构和算法具有重要意义。
4113 6
|
缓存 关系型数据库 MySQL
【深入了解MySQL】优化查询性能与数据库设计的深度总结
本文详细介绍了MySQL查询优化和数据库设计技巧,涵盖基础优化、高级技巧及性能监控。
2107 1
|
机器学习/深度学习 算法 Python
随机森林算法是一种强大的集成学习方法,通过构建多个决策树并综合其结果进行预测。
随机森林算法是一种强大的集成学习方法,通过构建多个决策树并综合其结果进行预测。本文详细介绍了随机森林的工作原理、性能优势、影响因素及调优方法,并提供了Python实现示例。适用于分类、回归及特征选择等多种应用场景。
1090 7
|
Web App开发 缓存 Linux
FFmpeg开发笔记(三十六)Linux环境安装SRS实现视频直播推流
《FFmpeg开发实战》书中第10章提及轻量级流媒体服务器MediaMTX,适合测试RTSP/RTMP协议,但不适合生产环境。推荐使用SRS或ZLMediaKit,其中SRS是国产开源实时视频服务器,支持多种流媒体协议。本文简述在华为欧拉系统上编译安装SRS和FFmpeg的步骤,包括安装依赖、下载源码、配置、编译以及启动SRS服务。此外,还展示了如何通过FFmpeg进行RTMP推流,并使用VLC播放器测试拉流。更多FFmpeg开发内容可参考相关书籍。
1465 2
FFmpeg开发笔记(三十六)Linux环境安装SRS实现视频直播推流
|
机器学习/深度学习 人工智能 算法
机器学习:K-means算法基本原理及其变种
机器学习:K-means算法基本原理及其变种
2342 0
机器学习:K-means算法基本原理及其变种
|
Ubuntu API Python
Chat-TTS chat-tts-ui 实机部署上手测试!Ubuntu服务器实机 2070Super*2 8GB部署全流程
Chat-TTS chat-tts-ui 实机部署上手测试!Ubuntu服务器实机 2070Super*2 8GB部署全流程
668 1
|
网络安全 Docker 容器
WSL2 固定IP与局域网访问
该文档介绍了如何在新版WSL2中配置镜像模式网络,以实现WSL2 IP与主机相同的固定设置。然而,启用此模式后,Docker服务在本机上无法访问。作者分享了针对这个问题的解决方案,包括编辑`.wslconfig`文件开启镜像网络和调整Docker设置。具体步骤涉及更新WSL和Docker(docker-ce)的安装,以及修改`daemon.json`文件以允许本机和局域网访问Docker服务。
2395 2