Маскируем класс под граф Boost. Часть 2: Завершаем реализацию поддержки концепций

a5b77f5999db35249fa68daae2ff4415.pngПролог: Концепции BoostЧасть 1: Подключение ассоциированных типов без вмешательства в интерфейс исходного класса Кратко напомню задачу. Есть двумерное игровое поле из клеток, часть из которых свободна, а часть занята. Требуется найти путь по свободным клеткам из одной позиции поля в другую. Алгоритм поиска пути реализован в Boost. Но он требует, чтобы наше поле подходило под определение графа. Точнее класс должен удовлетворять двум концепциям — boost: VertexListGraph и boost: IncidenceGraph. При этом интерфейс игрового поля менять не хочется — для всего остального проекта это не граф и графом никогда не станет. В прошлой части было рассмотрено подключение внешних ассоциированных типов, необходимых для интерпретации класса как boost-графа. Конечно, одних типов недостаточно. Также требуется реализовать несколько функций с заданной сигнатурой и итераторов, с помощью которых библиотека сможет манипулировать игровым полем как графом.Читать дальше →

© Habrahabr.ru