平时在Leetcode上刷题的时候,总能看到有一些题中最快的代码都有这样一段

static const auto init = []() {
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
return nullptr;
}();

有时候明明算法是一样的,但是速度要比没有这段代码的快很多;

查了一下这段代码其实是给cin加速的,也就是说上面提到的题应该是碰到的大数据的输入,而cin cout要比scanf  printf慢很多,很容易就time error了;

这应该也是一些acm dalao用printf scanf而不用cincout的原因吧;

具体是:

  1. C++为了让cin cout和scanf printf 同时使用时不产生混乱,所以c++用一个缓冲区来同步c的标准流,
    而std::ios::sync_with_stdio(false)可以关闭这一个同步,让cin和cout不经过缓冲区;
  2. tie()函数是把两个stream绑定到一起,flush()是把缓冲区的数据输出到文件,而cin和cout是默认绑定在一起的,
    每次使用都会调用flush(), 而cin.tie(nullptr)可以解除这个绑定;
  3. cin和cout默认绑定在一起,是为了防止cin出现在cout之前,在绑定后,
    每次cin都会先把缓冲区的数据刷新到输出文件中

今天也碰到了一个大数据输入的题:

嘛,其实这里主要是算法的问题;

改进之后,这里还没用上述的代码:

使用之后:

还是有效果的;

最新文章

  1. VS 生成事件
  2. java 异步处理
  3. 7 -- Spring的基本用法 -- 6...
  4. 《深入浅出Node.js》第6章 理解 Buffer
  5. Android study first ----------安卓项目目录结构及adb指令
  6. 一些新的web性能优化技术
  7. git 10.8
  8. (转)每天一个Linux命令(4): mkdir
  9. android错误系列之导出数据库出错Failed to pull selection
  10. 带文字的ImageButton[自定义]
  11. POJSorting It All Out (拓扑)
  12. c++之 常量
  13. Gentoo网络配置
  14. [Usaco2007 Open]Fliptile 翻格子游戏
  15. 51 nod 1097 拼成最小的数 思路:字符串排序
  16. 抓取Android应用的log
  17. 根据excel表格字段生成sql语句
  18. redis 持久化文章分析的很到位
  19. BP神经网络与Python实现
  20. ==、equals和hashCode小结

热门文章

  1. Kibana: Unknown error while connecting to Elasticsearch
  2. 爬虫—使用Requests
  3. Elasticsearch and MongoDb
  4. DBUtils C3P0 阿里巴巴德鲁伊连接池工具的下载
  5. UML建模 | Rose | 没有跳出可选择新建RUP的对话框解决方法
  6. 【aspnetcore】模拟中间件处理请求的管道
  7. Linux、UNIX设置开机自动运行命令、脚本配置
  8. Retrofit实现Delete请求
  9. 我的NopCommerce之旅(9): 编写Plugin实例
  10. 開玩樹莓派(一):安裝Raspbian系統