Алгоритмы и структуры данных на C++: сортировки, поиск, обходы, разбор классических задач с оценкой сложности. Каждый алгоритм — с реализацией, пояснением шагов и примерами применения в реальном коде.
Strategy: подстановка алгоритмов во время выполнения
Введение В этой статье разберём паттерн по существу, для случаев, где он РЕАЛЬНО оправдан: когда конкретный алгоритм для выполнения определённой задачи должен выбираться или изменяться во время выполнения,…
Observer: сигналы/слоты Qt как готовая реализация паттерна
Введение Qt сигналы/слоты — это готовая реализация Observer, не требующая написания вручную — в этой статье разберём паттерн Observer систематически: его классическую, «ручную» реализацию на чистом C++, и…
Графы: представление, обход (BFS/DFS), практическое применение
Введение После линейных структур и деревьев (частный случай графа без циклов) переходим к графам в общем виде — структуре, моделирующей произвольные связи между сущностями, естественной для широкого круга…
Деревья: бинарные деревья поиска, балансировка, map/set на их основе
Введение В статьях SQL-цикла упоминала B-tree индексы СУБД — в этой статье разберём похожую по духу, но более общую структуру данных программирования: бинарные деревья поиска, лежащие в основе…
Хеш-таблицы: unordered_map/unordered_set, коллизии, производительность
Введение QSet для демонстрации линейной сложности поиска дубликатов — в этой статье разберём хеш-таблицы (std::unordered_map/unordered_set, QHash/QSet) подробнее: принцип работы через хеш-функцию, проблему коллизий, и практические последствия для производительности.…
Структуры данных STL изнутри: vector, list, deque — когда что выбрать
Введение Основной цикл статей уже использовал std::vector/QVector без подробного разбора внутреннего устройства — в этой статье разберём, как реализованы основные линейные контейнеры STL изнутри, и какая внутренняя структура…
Обзор сложности алгоритмов: Big O на практике для C++ разработчика
Введение Все предыдущие циклы статей писали код, работающий корректно — но не всегда явно анализировали, насколько быстро этот код работает при росте объёма данных. В этой статье разберём…
Итоговый мини-проект: применение алгоритмов для оптимизации реального Qt-приложения
Введение В заключительной статье цикла, и всего плана статей в его текущем объёме, соберём итоговый проект, демонстрирующий применение разобранных алгоритмов и структур данных для оптимизации реалистичной, практической задачи…