Дізнайтеся, як використовувати лямбда-вирази C++ у C++17 за допомогою C++Builder

C++ отримав багато доповнень у C++11, C++14 та C++17. В даний час C++ є зовсім іншою мовою, ніж раніше. У цьому дописі про сучасний C++ пояснюється, як використовувати бібліотеку стандартних шаблонів та найважливіші функції C++17, які значно допоможуть вам писати код, який можна читати, підтримувати та виразити!

Однією з нових можливостей C++11 були лямбда-вирази. У C++11, C++14 і C++17 лямбда-вирази отримали деякі нові доповнення, які зробили лямбда-вираз ще більш потужним.

Якщо ви не знаєте, що таке лямбда-вираз, ось відповідь:

Лямбда-вирази або лямбда-функції конструюють замикання. Замикання — це дуже загальний термін для неіменованих (тимчасових) об’єктів, які можна викликати як функції.
Лямбда-вирази – чудовий спосіб допомогти зробити код загальним і акуратним. Лямбда-вирази можна використовувати як параметри для реальних загальних алгоритмів, щоб спеціалізуватися на досягненні результатів при обробці певних типів, визначених користувачем.

За допомогою лямбда-виразів ми можемо інкапсулювати код, щоб викликати його пізніше та в будь якому місті, оскільки ми можемо їх скопіювати.

Ми також можемо інкапсулювати код, щоб викликати його кілька разів з різними параметрами.

Давайте наведемо реальний приклад:

#ifdef _WIN32
#include <tchar.h>
#else
typedef char _TCHAR;
#define _tmain main
#endif
 
#include <iostream>
#include <string>
     
using namespace std;

int _tmain(int argc, _TCHAR* argv[]) {
    string hello = "C++";
    string world = "17";
    auto add_things = [](auto a, auto b) { return a + b; };
    auto i = add_things(1, 2);
    auto s = add_things(hello, world);
 
    cout << i << endl;
    cout << s << endl;
    cout << [](auto a, auto b){ return a + b; }(2, 2) << '\n';
    system("pause");
    return 0;
}

Зверніть увагу на цей рядок:

auto add_things = [](auto a, auto b) { return a + b; };

Це проста у використанні, як і будь-яка інша двійкова функція. Оскільки ми визначили його параметри як автоматичний тип, він працюватиме з усім, що визначає оператор плюс (+), так само, як це роблять рядки.

І тут ми використовуємо лямбда-вираз і друкуємо результат на консоль:

auto i = add_things(1, 2);
auto s = add_things(Hello, World);
cout << i << endl;
cout << s << endl;

Нам не потрібно зберігати лямбда-вираз у змінній, щоб використовувати його. Ми також можемо визначити його на місці, а потім записати параметри в дужках відразу за ним (2, 2):

cout << [](auto a, auto b){ return a + b; }(2, 2) << ‘\n’;

Як бачите, це синтаксис для лямбда-виразів. Найкоротший можливий лямбда-вираз — []{}, він просто не приймає параметрів, нічого не фіксує і, по суті, нічого не робить.

Істочник: blogs.embarcadero.com

Дати оцінку данній статті

Про автора

Додати коментар

Недавні записи