这个lambda的目的是什么?

Sal*_*ake 14 c++ c++14

我在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。


0x4*_*2D2 9

对于在后台使用C ++ I / O的在线法官,您通常会在竞争性编程竞赛作品中看到此代码。为了提高提交的时钟运行时间,可以将流解开并从标准C流中取消C ++ IOStream的同步。使用lambda是一种在声明变量后立即执行代码的巧妙方法。为了获得此优化的全部效果,应将其放置在执行任何其他代码之前。