Лямбды — это удобные анонимные функции, которые можно объявлять прямо в коде. Вот ключевые фишки:
🔹Базовый синтаксис
auto lambda = [] { /* тело функции */ };
Каждая лямбда имеет уникальный тип, даже если выглядит так же, как другая.
🔹Захват переменных - По значению [x] — создаётся копия. - По ссылке [&x] — работаем с оригиналом.
int a = 10, b = 10; auto fn = [a, &b] { a++; // Не влияет на оригинал b++; // Меняет исходную переменную };
🔹Параметры и возвращаемое значение
auto sum = [](int x, int y) -> int { return x + y; };
Можно опустить -> int, если компилятор сам выведет тип.
🔹Изменяемые лямбды (mutable) Если захватываем по значению и хотим менять значение между вызовами:
int count = 0; auto bump = [count]() mutable { ++count; };
🔹Обобщённые лямбды (C++14+) Можно использовать auto для параметров:
auto sum = [](auto x, auto y) { return x + y; };
🔹Условная компиляция (if constexpr) Позволяет обрабатывать разные типы по-разному:
auto print = [](auto x) { if constexpr (std::is_same_v) { std::cout << «int: " << x; } };
💡Вывод:
Лямбды делают код лаконичнее, поддерживают захват переменных, обобщённые вычисления и даже constexpr-логику. Отлично заменяют мелкие функции и функторы.
Лямбды — это удобные анонимные функции, которые можно объявлять прямо в коде. Вот ключевые фишки:
🔹Базовый синтаксис
auto lambda = [] { /* тело функции */ };
Каждая лямбда имеет уникальный тип, даже если выглядит так же, как другая.
🔹Захват переменных - По значению [x] — создаётся копия. - По ссылке [&x] — работаем с оригиналом.
int a = 10, b = 10; auto fn = [a, &b] { a++; // Не влияет на оригинал b++; // Меняет исходную переменную };
🔹Параметры и возвращаемое значение
auto sum = [](int x, int y) -> int { return x + y; };
Можно опустить -> int, если компилятор сам выведет тип.
🔹Изменяемые лямбды (mutable) Если захватываем по значению и хотим менять значение между вызовами:
int count = 0; auto bump = [count]() mutable { ++count; };
🔹Обобщённые лямбды (C++14+) Можно использовать auto для параметров:
auto sum = [](auto x, auto y) { return x + y; };
🔹Условная компиляция (if constexpr) Позволяет обрабатывать разные типы по-разному:
auto print = [](auto x) { if constexpr (std::is_same_v) { std::cout << «int: " << x; } };
💡Вывод:
Лямбды делают код лаконичнее, поддерживают захват переменных, обобщённые вычисления и даже constexpr-логику. Отлично заменяют мелкие функции и функторы.
However, analysts are positive on the stock now. “We have seen a huge downside movement in the stock due to the central electricity regulatory commission’s (CERC) order that seems to be negative from 2014-15 onwards but we cannot take a linear negative view on the stock and further downside movement on the stock is unlikely. Currently stock is underpriced. Investors can bet on it for a longer horizon," said Vivek Gupta, director research at CapitalVia Global Research.
How Does Bitcoin Work?
Bitcoin is built on a distributed digital record called a blockchain. As the name implies, blockchain is a linked body of data, made up of units called blocks that contain information about each and every transaction, including date and time, total value, buyer and seller, and a unique identifying code for each exchange. Entries are strung together in chronological order, creating a digital chain of blocks. “Once a block is added to the blockchain, it becomes accessible to anyone who wishes to view it, acting as a public ledger of cryptocurrency transactions,” says Stacey Harris, consultant for Pelicoin, a network of cryptocurrency ATMs. Blockchain is decentralized, which means it’s not controlled by any one organization. “It’s like a Google Doc that anyone can work on,” says Buchi Okoro, CEO and co-founder of African cryptocurrency exchange Quidax. “Nobody owns it, but anyone who has a link can contribute to it. And as different people update it, your copy also gets updated.”