C ++ Авто Выполнение Функции? - PullRequest
0 голосов
/ 06 апреля 2020

При решении проблем Leetcode я столкнулся с решением проблемы (где обычно мы получаем доступ только к классу решения, а не к основному), где я нашел это утверждение после объявления и определения класса. Я знаком с внутренним содержанием, таким как cin.tie sync_with_stdio et c. Но что делает auto speedup с [](){//}()? Это самоисполняющаяся функция. Любая помощь будет высоко оценена.

   auto speedup=[](){
        std::ios::sync_with_stdio(false);
        cin.tie(nullptr);
        cout.tie(nullptr);
        return nullptr;
    }();

Заранее спасибо.

1 Ответ

1 голос
/ 06 апреля 2020

От [] до} - лямбда-выражение, также известное как анонимная функция. Он был представлен в C ++ 11. Он вычисляет указатель на функцию, которая не принимает аргументов и выполняет код в данном теле функции, затем возвращает nullptr.

Этот оператор вызывает эту лямбда-функцию и помещает ее возвращаемое значение в ускорение. Поскольку лямбда-выражение не дало явного типа возвращаемого значения, я уверен, что тип возвращаемого значения и, следовательно, тип переменной ускорения, равен nullptr_t.

...