Лямбда-функції
Свайпніть щоб показати меню
Лямбда-функції, або анонімні функції, — це можливість створювати невеликі, безіменні функції безпосередньо у вашому коді. Вони особливо корисні, коли потрібна проста функція на короткий час і немає бажання визначати окрему іменовану функцію.
Лямбда-функції корисні з кількох причин:
Лямбда-функції дозволяють писати короткий і лаконічний код. Вони ідеально підходять для операцій, які можна виразити у кількох рядках.
Вони можуть захоплювати змінні з навколишньої області видимості, що дозволяє використовувати змінні з батьківської функції всередині лямбди.
Лямбди можна передавати як аргументи до інших функцій, що робить їх зручними для таких функцій, як std::for_each, std::sort тощо.
Як створити лямбда-функцію?
Ви можете використати наступний синтаксис для створення лямбда-функції.
lambda_function.h
123[capture_clause](parameter_list) -> return_type { // function body }
Клауза захоплення у лямбда-функції дозволяє вказати, які змінні з навколишньої області видимості (поза лямбда-функцією) можуть бути доступні та використовуватись всередині лямбда-функції. Існує 3 основних типи клауза захоплення:
-
Без захоплення
[]: лямбда-функція не має доступу до жодних змінних з навколишньої області видимості; -
Захоплення конкретних змінних за значенням
[var1, var2, ...]: лямбда-функція може отримати доступ до конкретних змінних з навколишньої області видимості за значенням; -
Захоплення конкретних змінних за посиланням
[&var1, &var2, ...]: лямбда-функція може отримати доступ до конкретних змінних з навколишньої області видимості за посиланням.
main.cpp
1234567891011121314#include <iostream> int main() { int multiplier = 2; // Lambda function capturing `multiplier` by reference // With explicit return type (`int`) int result = [&multiplier](int num) -> int { return num * num * multiplier; }(5); // Invoking the lambda with argument 5 std::cout << result << std::endl; }
Функція створюється наступним чином:
-
Лямбда-функція захоплює змінну
multiplierза посиланням[&multiplier]; -
Тип повернення
-> intвказує, що лямбда-функція повертає ціле число; -
Лямбда негайно викликається з аргументом
5, а результат зберігається у зміннійresult.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат