Лямбда-выражение
Лямбда-выражение - это анонимная функция, которую
можно объявить прямо в том месте кода, где она
используется. Лямбда состоит из списка захвата,
списка параметров, спецификатора и тела. В списке
захвата указывается, какие внешние переменные
доступны внутри лямбды: [] - ничего не
захватывается, [x] - захват переменной
x по значению, [&x] - захват
переменной x по ссылке, [=] -
захват всех используемых переменных по значению,
[&] - захват всех используемых переменных
по ссылке.
Синтаксис
[capture](params) -> return_type { body }
Пример
Давайте создадим простую лямбду, которая принимает два числа и возвращает их сумму:
#include <iostream>
using namespace std;
int main()
{
auto sum = [](int a, int b) {
return a + b;
};
cout << sum(2, 3) << endl;
return 0;
}
Результат выполнения кода:
5
Пример
Давайте захватим внешнюю переменную по значению и используем её внутри лямбды:
#include <iostream>
using namespace std;
int main()
{
int x = 10;
auto print = [x]() {
cout << x << endl;
};
print();
return 0;
}
Результат выполнения кода:
10
Пример
Давайте захватим внешнюю переменную по ссылке и изменим её внутри лямбды:
#include <iostream>
using namespace std;
int main()
{
int x = 10;
auto inc = [&x]() {
x++;
};
inc();
cout << x << endl;
return 0;
}
Результат выполнения кода:
11