П’ятниця, 28 Січня, 2022


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

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

Дізнайтеся, як використовувати лямбда-вирази 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’;

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

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


СХОЖІ ЗАПИСИ

НАПИСАТИ ВІДПОВІДЬ

введіть свій коментар!
введіть тут своє ім'я

Останні Новини