❤5👍4🔥3
Позволяет одновременно извлечь значения из разных объектов одним понятным выражением кода.
Что важно знать:
• Упрощает чтение, показывая имена сразу рядом с данными;
• Позволяет в одном условии одновременно проверить и извлечь данные;
• Работает с разными наборами данных и вашими структурами.
Поэтому, используйте распаковку для более чистого и понятного кода.
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