Парсим --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
This media is not supported in your browser
VIEW IN TELEGRAM
Подборка из задач по алгоритмам и структурам данных: массивы, списки, стеки, очереди, деревья, хеш-таблицы и сортировки. Каждая задача — с пояснениями и ссылками на базовые и продвинутые приёмы.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9❤3👍3
Функция
std::launder сообщает компилятору, что по адресу создан новый объект.Что важно знать:
• Без него программа может получить старое число;
• Его вызов гарантирует чтение именно новой записи;
• Нужен только при хитром. обращении с памятью
Используй разумно, избегай неожиданных ошибок.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16❤5👍3
std::ranges + views в действии: фильтруем и преобразуем без циклов!
Нужно из вектора чисел отфильтровать чётные и возвести их в квадрат?
В C++20 это можно сделать декларативно — без
Создаём исходный вектор с числами от 1 до 10:
Формируем pipeline из двух представлений: фильтрация чётных чисел и возведение их в квадрат:
Выводим полученные значения в консоль через
🔥 Современный C++ позволяет выразить обработку контейнеров кратко, наглядно и без лишней рутины!
📣 C++ Ready | #практика
Нужно из вектора чисел отфильтровать чётные и возвести их в квадрат?
В C++20 это можно сделать декларативно — без
for, временных переменных и ручного перебора:std::vector<int> data{1,2,3,4,5,6,7,8,9,10};Создаём исходный вектор с числами от 1 до 10:
auto pipeline = data
| std::views::filter([](int x) { return x % 2 == 0; })
| std::views::transform([](int x) { return x * x; });
Формируем pipeline из двух представлений: фильтрация чётных чисел и возведение их в квадрат:
std::ranges::copy(
pipeline,
std::ostream_iterator<int>(std::cout, " ")
);
Выводим полученные значения в консоль через
std::ranges::copy и итератор вывода.🔥 Современный C++ позволяет выразить обработку контейнеров кратко, наглядно и без лишней рутины!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤4🔥3
Он позволяет удобно работать с матрицами и тензорами без владения памятью и без ручного расчёта индексов. Подходит для численных вычислений, алгоритмов и любых задач, где нужна чистая работа с данными в несколько измерений.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22❤6👍4