tg-me.com/cpp_geek/320
Last Update:
🚀 Анонимные функции (лямбды) в C++
Лямбды — это удобные анонимные функции, которые можно объявлять прямо в коде. Вот ключевые фишки:
🔹 Базовый синтаксис
auto lambda = [] { /* тело функции */ };
Каждая лямбда имеет уникальный тип, даже если выглядит так же, как другая.
🔹Захват переменных
- По значению [x] — создаётся копия.
- По ссылке [&x] — работаем с оригиналом.
int a = 10, b = 10;
auto fn = [a, &b] {
a++; // Не влияет на оригинал
b++; // Меняет исходную переменную
};
🔹 Параметры и возвращаемое значение
auto sum = [](int x, int y) -> int { return x + y; };
Можно опустить -> int, если компилятор сам выведет тип.
🔹 Изменяемые лямбды (mutable)
Если захватываем по значению и хотим менять значение между вызовами:
int count = 0;
auto bump = [count]() mutable { ++count; };
🔹Обобщённые лямбды (C++14+)
Можно использовать auto для параметров:
auto sum = [](auto x, auto y) { return x + y; };
🔹Условная компиляция (if constexpr)
Позволяет обрабатывать разные типы по-разному:
auto print = [](auto x) {
if constexpr (std::is_same_v) {
std::cout << «int: " << x;
}
};
💡 Вывод:
Лямбды делают код лаконичнее, поддерживают захват переменных, обобщённые вычисления и даже constexpr-логику. Отлично заменяют мелкие функции и функторы.
➡️ @cpp_geek
BY C++ geek
Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283
Share with your friend now:
tg-me.com/cpp_geek/320