首页 > 解决方案 > 这个 lambda 的目的是什么?

问题描述

我在 C++ 代码中看到了以下 lambda。它的目的是什么?

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

标签: c++c++14

解决方案


局部static变量最多由执行其声明的第一个线程初始化一次。通过使用 lambda,我们可以利用这一事实最多运行任意代码一次。第一次到达声明时,到达它的线程将执行 lambda 中的代码,作为初始化变量的一部分。该变量的值可能并未实际使用,但程序会记住该变量已被初始化,因此不会再次运行 lambda。


推荐阅读