#1_Cpp: Лямбда функции C++ | Guide (гайд для начинающих) | Лямбда-выражения | Анонимные функции
Мой канал: https://t.me/qt_cpp_linux Мой dzen с объяснениями к видео: https://dzen.ru/id/5ee1b56d02f32409b790b4f0 Лямбда-функции в C++: Простые примеры для начинающих. Это способ создать анонимные функции прямо в коде, без необходимости определять их отдельно. Лямбды часто используются: - в алгоритмах стандартной библиотеки (например, std::find_if, std::sort), - в многопоточности - для обработки событий. - предикат. 00:00:00 - Основной синтаксис лямбды 00:00:32 - Пример 1: Простая лямбда без захвата и параметров. Она просто печатает сообщение. 00:01:10 - Как вызвать лямбду? 00:02:10 - Пример 2: Лямбда с параметрами. Лямбда принимает два числа и печатает их сумму. 00:04:35 - Пример 3: Захват [capture] переменных по значению. Захватим [capture] переменную из внешнего кода. По значению (копируем их). 00:10:40 - Пример 4: Захват по ссылке. Если хочешь, чтобы изменения внешней переменной влияли на лямбду, захватывай по ссылке (`&`). 00:15:10 - Пример 5: Захват по значению (=). Захватывает все доступные переменные из внешнего scope по значению (копирует их). Изменения в лямбде не влияют на оригиналы. 00:17:10 - Ошибка при попытке изменить переменную внутри лямбды. (assignment of read-only variable 'a') 00:17:20 - Объяснение: Когда вы захватываете переменные по значению с [=], лямбда создаёт **const-копии** этих переменных. Это означает, что копии доступны только для чтения внутри тела лямбды — их нельзя изменять. 00:18:02 - mutable - чтобы разрешить изменение копий внутри лямбды. Это изменит только **локальные копии** внутри лямбды. Оригинальные переменные (`a` и `b` вне лямбды) останутся неизменными. 00:20:32 - Пример 6: Захват всех внешних переменных по ссылке [&]. Если вы хотите изменить оригинальные переменные. 00:24:13 - Когда использовать mutable? Когда использовать [&]? 00:24:50 - Пример 7: Смешенный захват. 00:25:40 - Варианты смешанного захвата. 00:26:16 - Разбор блока (parameters). 00:26:48 - Пример 8: Передача по значению (по умолчанию) 00:29:45 - Пример 9: Передача по ссылке. 00:32:37 - Пример 10: Передача по константной ссылке. Сочетание ссылки с константностью: можно читать, но нельзя изменять. 00:35:35 - Пример 11: Передача по указателю. 00:38:50 - Пример 12: Значения по умолчанию. Можно задавать дефолтные значения. 00:41:18 - Важные нюансы. 00:42:09 - Пример 13: Явное указание возвращаемого типа в C++ лямбдах. Возврат int. 00:45:18 - Пример 14: Возврат string (конкатенация строк с захватом). 00:48:37 - Пример 15: Захват int, но возврат double (преобразование типов). 00:52:00 - Преобразование типов: static_cast(base). Объяснение. Автоматическое продвижение типов (type promotion). 00:52:50 - Пример 16: Возврат bool (проверка условия с захватом нескольких переменных). 00:56:32 - Пример 17: Использование лямбда (Предикат) в алгоритмах (с std::find_if). Поиск первого числа по условию. 01:02:44 - Пример 18: Поиск первого четного числа в (Предикат).
Мой канал: https://t.me/qt_cpp_linux Мой dzen с объяснениями к видео: https://dzen.ru/id/5ee1b56d02f32409b790b4f0 Лямбда-функции в C++: Простые примеры для начинающих. Это способ создать анонимные функции прямо в коде, без необходимости определять их отдельно. Лямбды часто используются: - в алгоритмах стандартной библиотеки (например, std::find_if, std::sort), - в многопоточности - для обработки событий. - предикат. 00:00:00 - Основной синтаксис лямбды 00:00:32 - Пример 1: Простая лямбда без захвата и параметров. Она просто печатает сообщение. 00:01:10 - Как вызвать лямбду? 00:02:10 - Пример 2: Лямбда с параметрами. Лямбда принимает два числа и печатает их сумму. 00:04:35 - Пример 3: Захват [capture] переменных по значению. Захватим [capture] переменную из внешнего кода. По значению (копируем их). 00:10:40 - Пример 4: Захват по ссылке. Если хочешь, чтобы изменения внешней переменной влияли на лямбду, захватывай по ссылке (`&`). 00:15:10 - Пример 5: Захват по значению (=). Захватывает все доступные переменные из внешнего scope по значению (копирует их). Изменения в лямбде не влияют на оригиналы. 00:17:10 - Ошибка при попытке изменить переменную внутри лямбды. (assignment of read-only variable 'a') 00:17:20 - Объяснение: Когда вы захватываете переменные по значению с [=], лямбда создаёт **const-копии** этих переменных. Это означает, что копии доступны только для чтения внутри тела лямбды — их нельзя изменять. 00:18:02 - mutable - чтобы разрешить изменение копий внутри лямбды. Это изменит только **локальные копии** внутри лямбды. Оригинальные переменные (`a` и `b` вне лямбды) останутся неизменными. 00:20:32 - Пример 6: Захват всех внешних переменных по ссылке [&]. Если вы хотите изменить оригинальные переменные. 00:24:13 - Когда использовать mutable? Когда использовать [&]? 00:24:50 - Пример 7: Смешенный захват. 00:25:40 - Варианты смешанного захвата. 00:26:16 - Разбор блока (parameters). 00:26:48 - Пример 8: Передача по значению (по умолчанию) 00:29:45 - Пример 9: Передача по ссылке. 00:32:37 - Пример 10: Передача по константной ссылке. Сочетание ссылки с константностью: можно читать, но нельзя изменять. 00:35:35 - Пример 11: Передача по указателю. 00:38:50 - Пример 12: Значения по умолчанию. Можно задавать дефолтные значения. 00:41:18 - Важные нюансы. 00:42:09 - Пример 13: Явное указание возвращаемого типа в C++ лямбдах. Возврат int. 00:45:18 - Пример 14: Возврат string (конкатенация строк с захватом). 00:48:37 - Пример 15: Захват int, но возврат double (преобразование типов). 00:52:00 - Преобразование типов: static_cast(base). Объяснение. Автоматическое продвижение типов (type promotion). 00:52:50 - Пример 16: Возврат bool (проверка условия с захватом нескольких переменных). 00:56:32 - Пример 17: Использование лямбда (Предикат) в алгоритмах (с std::find_if). Поиск первого числа по условию. 01:02:44 - Пример 18: Поиск первого четного числа в (Предикат).
