Лямбда-выражения — одна из самых мощных функций C++. Lambda представлена в 11 -й версии C++, а также доступна в версиях C++ 14 и 17.
Всякий раз, когда нам нужен указатель на функцию в нашей программе, в этом конкретном случае мы можем использовать лямбда. Он предоставляет программисту на C++ дополнительные возможности для написания определения функции без определения самой функции. Теперь мы подробно обсудим концепцию лямбда-выражения.
Лямбда-синтаксис
Синтаксис лямбда в основном состоит из трех частей. Они есть
- []
- ()
- {}
Где [] называется списком захвата.
() называется аргументом функции.
{} называется телом функции.
Элементы лямбда
- Список захвата: здесь мы пишем лямбда-выражение или функцию, все, что потребуется в программе.
- Параметры: Это также известно как лямбда-декларация. Его можно использовать как необязательный случай.
- Определение метода: Здесь мы объясняем, как функция будет вести себя в программе.
Определение и вызов функции
int main()
{
[] 90 { // Capture list and Parameter.
cout<< “The coding and expression part of Lambda” << endl ;
} () ; // Open and Close brace will invoke in lambda expression.
return 0 ;
}
Пример 1
#include<iostream>
using namespace std ;
struct trippleValue { // Define a Function object .
int operator() ( int value ) {
return value * 3 ;
}
};int main()
{
trippleValue tv ; // Object Creation .
int t = tv( 2 ) ;
cout<< “ The Cube value is ” << t << endl ;
return 0 ;
}
Выход
Объяснение
Здесь мы хотим объяснить, где лямбда-выражения фактически применяются к программе. Для этого здесь мы создаем функциональный объект с именем tv. Имя класса — trippleValue. Итак, мы создаем объект tv класса trippleValue, который будет получать значение и превращать его в значение куба. Внутри основной функции мы создаем объект tv и передаем значение 2. Теперь напечатайте значение t; он показывает результат 8. Потому что куб 2 равен 8.
Можно заметить, что в приведенной выше программе лямбда-выражения не используются. Теперь программа того же типа будет очень эффективно выполняться с помощью лямбда-выражения в следующей программе.
Пример 2
#include<iostream>
using namespace std ;
int main()
{
auto v = [] ( int value ) { return value * 2 ; } ; // Lambda Expression are used here.
int t = v( 2 ) ;
cout<< << t << endl ;
return 0 ;
}
Выход
Пояснение
Теперь мы сделали ту же программу с помощью лямбда-выражения. Здесь мы объявляем переменную v, которая является переменной автоматического типа, где мы храним значение, которое вернет лямбда-выражение. Мы делаем этот расчет в одной строке. Теперь мы передаем значение 2 внутрь переменной v и сохраняем его внутри переменной t. В следующей строке программы мы просто печатаем переменную t. Он показывает результат 4. Поскольку мы возвращаем значение внутри лямбда-выражения как значение * 2.
Пример 3
#include<iostream>
#include<algorithm>
#include<vector>int main()
{
std :: vector vc { 10 , 20 , 30 , 40 } ;
std :: for_each( vc.begin() , vc end() , [] ( int n) {
cout<< << n * n << endl ;
}) ;
return 0 ;
}
Выход
Объяснение
Здесь мы берем вектор с именем vc, который принимает некоторые значения 10, 20, 30 и 40. Мы хотим возвести в квадрат каждый элемент вектора. Для этого мы используем цикл for_each. Внутри скобок цикла for_each мы используем лямбда-выражение. Внутри его тела мы просто возводим эти векторные значения в квадрат.
Преимущества использования лямбды
- Лямбда-выражение эффективно повышает читабельность программы.
- Это уменьшает количество строк в коде, и программы становятся проще. В результате программисту становится легче писать меньше без кода.
- Лямбда-выражение не вводит в программу никаких дополнительных новых имен или строк. Это повышает надежность программы.
- Это также снижает временную сложность программы.
Вывод
Обсуждая детали концепции лямбда-выражения в C++, мы пришли к выводу, что это одна из мощных концепций C++. С помощью лямбда-выражения мы можем легко написать программный код эффективным образом. Если мы сможем понять концепцию лямбда и ее использование, то с помощью лямбда-выражения мы сможем очень легко решить многие вопросы программирования.