首页 > 其他分享 >sync_with_stdio(false)的作用

sync_with_stdio(false)的作用

时间:2024-08-08 15:38:43浏览次数:6  
标签:false cout stdio cin sync printf

参考

sync_with_stdio

这个函数是一个“是否兼容stdio”的开关,C++为了兼容C,保证程序在使用了std::printf和std::cout的时候不发生混乱,将输出流绑到了一起。

应用

在ACM里,经常出现数据集超大造成 cin TLE的情况。这时候大部分人(包括原来我也是)认为这是cin的效率不及scanf的错,甚至还上升到C语言和C++语言的执行效率层面的无聊争论。其实像上文所说,这只是C++为了兼容而采取的保守措施。我们可以在IO之前将stdio解除绑定,这样做了之后要注意不要同时混用cout和printf之类。

在默认的情况下cin绑定的是cout,每次执行 << 操作符的时候都要调用flush,这样会增加IO负担。可以通过tie(0)(0表示NULL)来解除cin与cout的绑定,进一步加快执行效率。

ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);

原来而cin,cout之所以效率低,是因为先把要输出的东西存入缓冲区,再输出,导致效率降低,而这段语句可以来打消iostream的输入 输出缓存,可以节省许多时间,使效率与scanf与printf相差无几.

标签:false,cout,stdio,cin,sync,printf
From: https://www.cnblogs.com/geraldg/p/18349068

相关文章

  • Android SurfaceFlinger——Vsync信号发送(五十二)
           通过上一篇文章我们创建了一个EventThread线程,并且它持有了 SurfaceFlinger中resyncWithRateLimit()方法的指针。这里我们主要来看一下EventThread对信号的处理。一、发送Vsync信号        当SurfaceFlinger执行完queueBuffer()方法之后,......
  • JavaScript中的异步编程:Promise、async 和 await
    JavaScript中的异步编程:Promise、async和await在JavaScript中,Promise、async和await是处理异步操作的关键技术。这些技术允许开发者以更清晰、更可维护的方式编写异步代码,特别是在面对复杂的异步逻辑时。下面我会详细解释每个概念并展示它们是如何协同工作的。Prom......
  • MySQL 备库可以设置 sync_binlog 非 1 吗?【转】
    众所周知,防止断电丢失Binlog、故障恢复过程丢失数据,MySQL主库必须设置sync_binlog=1。那么作为备库可以例外吗?我们的第一反应当然是不行,既然主库会丢数据,备库自然一样。但其实不然,备库丢了数据是可以重新从主库上复制的,只要这个复制的位置和备库本身数据的位置一致就OK了,它......
  • 【vulhub靶场之rsync关】
    一、使用nmap模块查看该ip地址有没有Rsync未授权访问漏洞nmap-p873--scriptrsync-list-modules加IP地址查看到是有漏洞的模块的二、使用rsync命令连接并读取文件查看src目录里面的信息。三、对系统中的敏感文件进行下载——/etc/passwd执行命令:rsyncrsync:/......
  • 串行通信协议--UART(Universal Asynchronous Receiver/Transmitter,通用异步收发传输器
    一、UART简介  UART广泛应用于微控制器和计算机之间的数据通信,如GPS模块、蓝牙模块、GSM模块等。UART是一种通用串行数据总线,用于异步通信,该总线双向通信,可以实现全双工传输和接收。在嵌入式设计中,UART用于主机与辅助设备通信UART通常被集成于其他通讯接口的连结上。UA......
  • 问:@Async和@Transaction可以一起使用吗?
     在Java中,@Async和@Transaction注解是可以一起使用的,但需要注意一些细节和潜在问题。 1.@Async和@Transactions注解@Async注解:用于异步执行方法。使用此注解的方法会在单独线程中执行,而不会阻塞调用线程。在需要执行耗时操作而不希望阻塞主线程时非常有用。......
  • Java并发—synchronized关键字的应用
    目录1、synchronized适用场景2、synchronized的原理3、synchronized的锁升级4、synchronized的注意事项5、总结synchronized是Java中用于实现线程同步的关键字。它可以在方法级别或代码块级别使用,以确保同一时刻只有一个线程可以访问被同步的代码段。synchronized通......
  • 文件服务器rsync
    服务器配置echo"cc:cc2023">/etc/rsync.passwordchmod600/etc/rsync.passwordvi/etc/rsyncd.confuid=rootgid=rootusechroot=nomaxconnections=40pidfile=/var/run/rsyncd.pidlogfile=/var/log/rsyncd.logexclude=lost+found/tran......
  • synchronized介绍
    synchronized原理:从JVM规范中可以看到Synchonized在JVM里的实现原理,JVM基于进入和退出Monitor对象来实现方法同步和代码块同步,但两者的实现细节不一样。代码块同步是使用monitorenter和monitorexit指令实现的,而方法同步是使用另外一种方式实现的,通过编译之后,同步方法与普......
  • 一文讲清楚synchronized原理---每周一更系列
    synchronized是Java提供的原子性内置锁,这种内置的并且使用者看不到的锁也被称为监视器锁。synchronized通过在代码块前后加上monitorenter和monitorexit字节码指令用于实现进入和退出。如果是同步方法,则是打上标记,隐式的使用monitorenter和monitorexit字节码指令。在jdk1.5之前......