Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗cpPmLbFP 325 of 390 menu
◀ ▶

Лямбда параметром функции в C++

Параметр функции может принимать лямбду. В C++20 для этого пишут auto перед именем параметра. Внутри функции такой аргумент вызывают как обычную функцию:

int applyTwice(int value, auto fn) { int first = fn(value); return fn(first); } int main() { auto add1 = [](int n) { return n + 1; }; std::cout << applyTwice(3, add1) << "\n"; // выведет 5 return 0; }

Лямбда без аргументов подходит для отложенного действия. Функция может вызвать переданный блок один или несколько раз:

void runSafe(auto fn) { std::cout << "begin\n"; fn(); std::cout << "end\n"; } int main() { auto work = []() { std::cout << "work\n"; }; runSafe(work); return 0; }

Лямбда с результатом bool удобна для проверки значения:

bool checkValue(int n, auto fn) { return fn(n); } int main() { auto even = [](int n) { return n % 2 == 0; }; std::cout << checkValue(8, even) << "\n"; // выведет 1 return 0; }

Напишите функцию combine с двумя целыми и параметром auto fn. Функция возвращает результат лямбды для этих чисел. Выведите результат для 6 и 7 так, чтобы вернулось их произведение.

Напишите функцию repeatAction: целое times и параметр auto fn. Тело лямбды должно выполниться столько раз, сколько задано в times. Проверьте выводом строки "tick" три раза.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить