关于竞赛大佬常用的 static const auto _ = []() 用法解析
前言
在刷Leetcode的时候发现很多运算速度极快的代码都有这一段,所以研究一下.
static const auto _ = []()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
return nullptr;
}();
第一次见这种代码懵了下,auto有接触过,其他就不太熟悉。
另一篇文章里也有详细解析
[黑胡椒和盐](https://blog.csdn.net/qq_32320399/article/details/81518476)
Lambda
属于C++11的新特性,没有好好研究过啊,还需要多学习。(C++ Primer 第十章泛型算法中有提到)
Lambda也可以看做一种函数的定义方式,不过可以在函数内部声明定义 并且直接使用,必须使用尾置返回,并且是一个可调用对象,可以使用调用运算符(())(没错就是这个括号,跟在函数后面的)。
这里的[]即捕获列表,可以捕获所在函数中的局部变量,()代表了参数括号,参数为空,也可以省去括号(Lambda中不支持默认参数),函数体和捕获列表不能省去。
ios::sync_with_stdio(false)
可以参考此处: ios::sync_with_stdio(false)
主要作用是提高c++ cin cout 的速度,cin和cout原本的效率较低,涉及到要将输入输出存入缓存区。
cin.tie(nullptr);
这里的主要作用是将cin和cout解除绑定,因为std :: cin默认是与std :: cout绑定的,所以每次操作的时候(也就是调用”<<”或者”>>”)都要刷新(调用flush),这样增加了IO的负担,通过tie(nullptr)来解除std :: cin和std :: cout之间的绑定,来降低IO的负担使效率提升(这段复制自上面那篇)。
总结
这段函数的主要作用就是提高输入输出的速度,貌似是好多竞赛大佬都用的,我只能瑟瑟发抖了。
分类:
刷题笔记----------
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· 分享4款.NET开源、免费、实用的商城系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 全程不用写代码,我用AI程序员写了一个飞机大战