Лямбда-функции — это безымянные inline-функции, которые можно определить и использовать непосредственно в точке вызова. Появились в C++11.
Синтаксис:
cpp
[capture list] (список захвата) — определяет, какие внешние переменные доступны внутри лямбды и как они захватываются (по значению [var] или по ссылке [&var]). [=] захватывает все по значению, [&] — все по ссылке. [] означает отсутствие захвата.(parameter list) (список параметров) — аналогичен списку параметров обычной функции.-> return type (тип возвращаемого значения) — указывает тип возвращаемого значения. Может быть опущен, если тип может быть выведен компилятором (начиная с C++14).{} (тело лямбда-функции) — содержит исполняемый код лямбды.Примеры использования:
Сортировка с пользовательским критерием:
cpp
Использование захвата:
cpp
Захват по ссылке для модификации внешней переменной (требует mutable для захвата по значению):
cpp
Преимущества:
Недостатки: