栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

cin关闭流同步的利弊与cout的endl使用

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

cin关闭流同步的利弊与cout的endl使用

在算法题中涉及到大量数据读入的时候,通常建议大家避免使用cin读入数据而改用scanf,原因是scanf相对速度更快。

解决方法

1. cin效率低的原因一是在于默认cin与stdin总是保持同步,cin会把要输出的东西先存入缓冲区,进而消耗时间。通过关闭同步,可以有效提高cin效率;

2. 默认情况下cin绑定的是cout,每次执行<<的时候都要调用flush,进而增加IO负担,因此可以通过tie(0)解绑。

代码:

#include 
using namespace std;

int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
}

 关闭同步之后,cin与scanf的执行效率相差无几

注意事项

如果在同一个流上使用两组 I/O 函数(头文件/)(例如stdin流同时关联cin与scanf),那么最好让它们保持同步;

如果任何一个流只使用一个 I/O 系列,则可以关闭同步(比如在各自涉及单独的流的情况下,可以同时使用scanf与cin)。

保险起见,关闭同步之后请不要同时使用C与C++的读写方式,避免不必要的麻烦。

cout中不要使用endl

每次使用endl,都要flush缓冲区,造成大量时间耗费。推荐cout << << "n"的写法。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/716948.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号