Эти структуры превращают строки в быстрый инструмент поиска и анализа.
Что важно знать:
• Строятся быстро, занимая умеренную память и время;
• Помогают мгновенно находить повторения и разные подстроки;
• Упрощают задачи сравнения текстов и циклических сдвигов;
Освойте их и ускорьте текстовые задачи сегодня.
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
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