sync_with_stdio(false)的副作用
2024-09-22 07:42:32
sync_with_stdio()
的一个特性
水一篇随笔
其实对于用快读的大佬来说没什么用,但还是提一下
ios::sync_with_stdio(false)
用处是“关闭同步”,从而加快cin与cout的效率。
在部分机子上如果开了这个函数cin和cout跑的还比printf和scanf快。
但是用了sync_with_stdio(false)之后不能与printf和scanf同用,否则会出错。
最近调试的时候发现的:
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cout<<"1\n";
printf("2\n");
cout<<"3\n";
printf("4\n");
}
运行结果是:
2
4
1
3
可以发现开了ios::sync_with_stdio(false)
之后,printf函数被提前了,而且这与它在代码中具体出现的位置无关。
至于为什么,据说是C++为了兼容C语言,保证程序在使用std::printf
和std::cout
的时候不发生混乱(不发生上述情况),将输出流绑到了一起,也就是用了sync_with_stdio()
函数:
如果不绑到一起(也就是开个ios::sync_with_stdio(false)),会造成指针读取的混乱,因此输出顺序混乱。
不过在测试的时候我并没有发现cin与scanf的不兼容(出于安全,还是别一起用)。
最新文章
- CSS补充与JavaScript基础
- Ubuntu为何永远绝对的免费?
- javascript中获取屏幕尺寸
- String[] a = new String[]{";1";,";2";},我如果想增加一个";3";到a中,如何增加?
- 利用在线工具自动化生成findviewById
- iOS学习之Object-C语言内存管理高级
- [Ruby on Rails系列]4、专题:Rails应用的国际化[i18n]
- Backward_chaining
- IOS 学习笔记(3) 视图UITabbarController
- Linux多线程服务端编程:使用muduo C++网络库
- iphone开发中数据持久化之——模型对象归档(二)
- promise(3) &#39;静态&#39;方法
- leetcode算法:Distribute Candies
- LinuxTimeLine
- kettle实现同构单表增量同步
- 自己实现字符串转整数(不使用JDK的字符串转整数的方法)
- saliency map [转]
- pthread线程私有数据
- Okra框架(三) 搭建HTTP服务器
- [BZOJ5338][TJOI2018]xor
热门文章
- 初识 Istio - 服务网格管理工具
- Nuget管理自己的项目库
- 《C++primerplus》第7章练习题
- tu
- JVM系列【3】Class文件加载过程
- [HAOI 2017]八纵八横
- python中remove函数的坑
- mac电脑上安装appium报错:Failed at the appium-chromedriver@4.25.1 postinstall script.
- IDEA SpringBoot+JPA+MySql+Redis+RabbitMQ 秒杀系统
- hdu6376 度度熊剪纸条-----01背包