我在C ++代码中看到以下lambda。目的是什么?
static const auto faster = [](){
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
return nullptr;
}();
Run Code Online (Sandbox Code Playgroud)
Bri*_*ian 21
局部static变量最多由执行其声明的第一个线程初始化一次。通过使用lambda,我们可以利用这一事实最多运行一次任意代码。首次到达声明时,到达该声明的线程将执行lambda中的代码,作为初始化变量的一部分。该变量的值大概没有实际使用,但是程序会记住该变量已被初始化,因此不会再次运行lambda。
对于在后台使用C ++ I / O的在线法官,您通常会在竞争性编程竞赛作品中看到此代码。为了提高提交的时钟运行时间,可以将流解开并从标准C流中取消C ++ IOStream的同步。使用lambda是一种在声明变量后立即执行代码的巧妙方法。为了获得此优化的全部效果,应将其放置在执行任何其他代码之前。
| 归档时间: |
|
| 查看次数: |
582 次 |
| 最近记录: |