Позволяет одновременно извлечь значения из разных объектов одним понятным выражением кода.
Что важно знать:
• Упрощает чтение, показывая имена сразу рядом с данными;
• Позволяет в одном условии одновременно проверить и извлечь данные;
• Работает с разными наборами данных и вашими структурами.
Поэтому, используйте распаковку для более чистого и понятного кода.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8❤6👍3🤝3
Коррутины: мини-генератор Фибоначчи за 5 строк!
С корутинами можно легко делать ленивые генераторы — без внешних буферов, флагов или сложных классов-итераторов.
Вот сама функция-генератор — всего 5 строк логики:
Здесь
Использование в
Цикл автоматически остановится, когда число превысит 1000, и выведет «0 1 1 2 3 5 8 …» вплоть до последнего подходящего значения.
🔥 Удобно, когда нужно стримить данные по мере запроса, а не хранить всю последовательность в памяти.
📣 C++ Ready | #практика
С корутинами можно легко делать ленивые генераторы — без внешних буферов, флагов или сложных классов-итераторов.
Вот сама функция-генератор — всего 5 строк логики:
std::experimental::generator<int> fib() {
int a = 0, b = 1;
while (true) {
co_yield a;
auto t = a; a = b; b = t + b;
}
}Здесь
co_yield приостанавливает выполнение и возвращает текущее значение, а при следующем вызове возобновляет работу ровно там, где остановилась. Все управление состоянием и стеком берёт на себя механизм корутин.Использование в
main() предельно простое — берём значения до нужного предела:int main() {
for (auto v : fib()) {
if (v > 1000) break;
std::cout << v << ' ';
}
}Цикл автоматически остановится, когда число превысит 1000, и выведет «0 1 1 2 3 5 8 …» вплоть до последнего подходящего значения.
🔥 Удобно, когда нужно стримить данные по мере запроса, а не хранить всю последовательность в памяти.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9❤6👍5
Эти структуры превращают строки в быстрый инструмент поиска и анализа.
Что важно знать:
• Строятся быстро, занимая умеренную память и время;
• Помогают мгновенно находить повторения и разные подстроки;
• Упрощают задачи сравнения текстов и циклических сдвигов;
Освойте их и ускорьте текстовые задачи сегодня.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9🔥5👍4
This media is not supported in your browser
VIEW IN TELEGRAM
Она позволяет парсить JSON-файлы в десятки раз быстрее стандартных решений, используя SIMD-инструкции современных процессоров. Поддерживает DOM-модель, потоковую обработку и API для удобной интеграции.
Оставляю ссылочку: GitHub📱
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12❤3👍3
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍6❤3
Парсим --key=value аргументы!
Создадим мини-парсер командной строки, который превращает аргументы вроде
Объявляем функцию
Перебираем
Разделяем строку на ключ и значение: если
В
🔥 Удобный CLI-парсер за 18 строк на чистом C++17, без сторонних библиотек!
📣 C++ Ready | #практика
Создадим мини-парсер командной строки, который превращает аргументы вроде
--port=8080 и --debug в удобный unordered_map:std::unordered_map<std::string, std::string>
parse_args(int argc, char* argv[]) {
std::unordered_map<std::string, std::string> opts;
Объявляем функцию
parse_args, которая вернёт словарь флагов и их значений:for (int i = 1; i < argc; ++i) {
std::string arg{argv[i]};
if (arg.rfind("--", 0)) continue;Перебираем
argv, пропуская имя программы (argv[0]) и фильтруем только аргументы, начинающиеся с --: auto eq = arg.find('=');
std::string key = arg.substr(2, eq - 2);
std::string val = (eq == std::string::npos)
? "true"
: arg.substr(eq + 1);
opts[key] = val;
}
return opts;
}Разделяем строку на ключ и значение: если
= не найден — сохраняем "true" как значение. Все пары кладём в unordered_map:int main(int argc, char* argv[]) {
auto args = parse_args(argc, argv);
std::cout << "port = " << args["port"] << "\n";
std::cout << "debug = " << args["debug"] << "\n";
}В
main выводим значения ключей port и debug, если они были переданы.🔥 Удобный CLI-парсер за 18 строк на чистом C++17, без сторонних библиотек!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍5🔥3
Создаёт пул задач, запускает их параллельно и автоматически завершает потоки без дополнительной настройки.
В этой задаче:
• Подходит для быстрого выполнения множества небольших заданий;
• Обеспечивает порядок обработки задач без сложных манипуляций;
• Самостоятельно завершает все потоки при выходе из программы.
Идеально для простых параллельных операций.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9🔥6👍4