Алгоритмы

Алгоритмы и структуры данных на C++: сортировки, поиск, обходы, разбор классических задач с оценкой сложности. Каждый алгоритм — с реализацией, пояснением шагов и примерами применения в реальном коде.

Алгоритмы

Composite: древовидные структуры объектов

Введение Многие реальные предметные области естественно моделируются как иерархия «часть-целое» — файловая система (директории, содержащие файлы и другие директории), графический интерфейс (контейнеры виджетов, содержащие другие виджеты, статьи QML-цикла…

Алгоритмы

Facade: упрощение сложного API через единый интерфейс

Введение Сложная подсистема (множество взаимодействующих классов, или сторонняя библиотека с богатым, многогранным API, CMake/OpenCV) может быть избыточно сложной для типичного, повседневного использования — Facade предоставляет упрощённый, единый интерфейс…

Алгоритмы

Decorator: динамическое расширение поведения объекта

Введение Наследование — стандартный способ расширения поведения класса, но он статичен (определяется на этапе компиляции и применяется ко ВСЕМ экземплярам производного класса одинаково) — Decorator решает задачу ДИНАМИЧЕСКОГО,…

Алгоритмы

Adapter: согласование несовместимых интерфейсов

Введение Открываем блок структурных паттернов темой Adapter — одним из самых практически частых паттернов, решающим простую, но регулярно встречающуюся задачу: использование класса с интерфейсом, несовместимым с тем, что…

Алгоритмы

Template Method и Visitor

Введение В этой статье разберём два паттерна одновременно — Template Method (определение общего «скелета» алгоритма с настраиваемыми шагами через переопределение в подклассах) и Visitor (добавление новых операций к…

Алгоритмы

State: автоматы состояний через паттерн

Введение В статьях QML-цикла разбирала States/Transitions QML как декларативный механизм управления состояниями интерфейса — паттерн State даёт концептуально аналогичный, но реализуемый непосредственно на C++ подход к структурированию кода,…

Алгоритмы

Command: инкапсуляция действия как объекта (undo/redo)

Введение Большинство интерактивных приложений (текстовые редакторы, графические редакторы) нуждаются в функциональности отмены/повтора действий (undo/redo) — Command решает эту задачу, превращая каждое отдельное действие пользователя в самостоятельный объект, который…