首页 > 其他分享 >如何使cin读取速度提高到接近scanf?

如何使cin读取速度提高到接近scanf?

时间:2024-09-09 14:50:37浏览次数:10  
标签:cout scanf 绑定 cin 刷新 NULL 读取

cin和cout的速度通常比scanf和printf慢很多,但是只要稍微处理以下,就可以提升到接近scanf的速度。

方法:(可以叠加使用)

1.使用ios_base::sync_with_stdio(false);命令

ios_base::sync_with_stdio(false);的作用:C++标准库默认会同步C++的标准I/O和C的标准I/O。关闭同步之后‘cin’和‘cout’将不再与C标准库的‘scanf’和‘printf’同步,可以减少同步开销,从而提高性能。

cin.tie(NULL);的作用:默认情况下‘cin’与‘cout’是绑定的,接触绑定后,‘cin’和‘cout’将不再相互依赖,减少不必要的刷新操作,从而提高性能。

2.使用cin.tie(NULL);命令

cin.tie(NULL);的作用:默认情况下‘cin’与‘cout’是绑定的,接触绑定后,‘cin’和‘cout’将不再相互依赖,减少不必要的刷新操作,从而提高性能。

奇怪的问题:用不用cout.tie(NULL);? 

回答:‘cout’通常不需要解除与其他流的绑定,因为‘cout’的输出操作不依赖于‘cin’的刷新。

3.使用'\n'替代endl

解释:endl会触发流的刷新操作,而'\n'不会。因此,在不用立刻刷新的情况下可以用'\n'替换endl提高速度。

什么是不用立刻刷新的情况:

①当你只是想在控制台上换行,而不需要立刻看到输出结果时。

②当你有一系列连续的输出操作时,可以用'\n'进行换行,减少刷新缓冲区的次数。

4.缓冲输入输出

将输入输出集中在一起处理,减少频繁的I/O操作。例如先将所有输入读入一个字符串或缓冲区再处理。

 

总结:

一般来说,使用方法1+2就够了。方法3在绝大多数情况下都是可以用的(尤其是当你在竞赛或者考试时)。


by:AlenaNuna

 

标签:cout,scanf,绑定,cin,刷新,NULL,读取
From: https://www.cnblogs.com/AlenaNuna/p/18404529

相关文章

  • c# 读取上传excel转换为DataTable
    varfiles=Request.Files;if(files==null||files.Count==0){returnJson(new{code=1,msg="未获取到文件"});}varfile=files[0];vardt=ReadExcelToDataTable(file.InputStream);returnJson(new{code=1,msg="已读取Excel......
  • 使用AtomicInteger原子类尝试优化分析
    1.使用AtomicInteger原子类尝试优化分析Java的java.util.concurrent.atomic包提供了一些原子类,可以在并发编程中避免显式加锁。最简单的我们可以使用AtomicInteger来替代显式的锁。packageorg.zyf.javabasic.thread.lock.opti;importjava.util.concurrent.atomic.AtomicInteger......
  • Tensorflow2如何读取自制数据集并训练模型?-- Tensorflow自学笔记13
    一.如何自制数据集?1.目录结构以下是自制数据集-手写数字集,保存在目录 mnist_image_label下2.数据存储格式 2.1.目录mnist_train_jpeg_60000下存放的是60000张用于测试的手写数字    如:0_5.jpg,表示编号为0,标签为5的图片       6_1.......
  • NGraphX v1.9.0发布 新增从Pandas DataFrame中读取文档构建向量索引,并优化向量检索器
    新增功能PandasDataFrame读取器:新增功能,支持从PandasDataFrame中加载LlamaIndex所需的文档。任何能加载进PandasDataFrame的文档数据均可连接此节点。功能优化DuckDB&Neo4J检索器:优化消息传递机制,现在可以从上游连接模版消息节点,便于进行进一步处理(如扩写、改......
  • Excel文档的读取(3)
    我们继续观察“销售订单数据”这张工作表。这张表里的每一行其实就是一个订单。下一步,我们需要在工作表里,逐行去判断哪些订单商品是“火龙果可乐”,并把对应的订单总价添加到当月售卖总金额里。此处,我们需要用到行数据的遍历。遍历orderSheet中所有的行数据,并使用print输出到......
  • Python批量读取身份证信息录入系统和重命名
    前言大家好,如果你对自动化处理身份证图片感兴趣,可以尝试以下操作:从身份证图片中快速提取信息,填入表格并提交到网页系统。如果你无法完成这个任务,我们将在“Python自动化办公2.0”课程中详细讲解实现整个过程。实现过程概述:模块与功能:re模块:用于从OCR识别出的文本中......
  • Excel文档的读取(1)
    熟悉使用Excel的同学应该都知道,在单个Excel表格里想要分商品计算总销售额,使用数据透视表也可以非常快速方便的获得结果。但当有非常大量的Excel文件需要处理时,每一个Excel文件单独去做数据透视也会消耗大量的时间。就算使用PowerQuery这样的工具进行多表合一,也会有同一个工作......
  • 【Java+GDAL】读取shp信息(字段、要素属性等)
    文章目录前言一、GDAL和Java版本二、代码实现1.引入gdal环境2.读取字段名和类型3.读取要素相关信息4.测试使用总结前言例如:之前写了两篇shp字段的文章,Java使用gdal更改shp要素的字段属性值和Java使用gdal重命名shp属性字段,没有讲到怎么读字段、字段值、要素等等。......
  • android利用jni读取assets文件夹下的文件
    一、概述在jni的开发中,有时候会在c/c++层读取assets文件夹下的图片。有两种方式可以选择:方式一:在java/kotlin层把文件读取出来,然后以字符串的形式传递给jni层。方式二:java/kotlin层传递一个文件名,jni利用AAssetManager读取文件内容目前介绍的是第二种方......
  • puthon-txt(1) 从txt读取gnss数据
     数据1453132356.60000034.0342694493108.755911045587.8002931453132357.96000034.0344383177108.755909682587.6737781453132358.52000034.0345050891108.755905295587.5684091453132359.16000034.0345823584108.755898876587.5876111453132359.56000034.......