# План рефакторинга PIVector2D ## Этап 1: Выполнить наследование Row от RowConst, Col от ColConst ### 1.1 Найти классы Col, Row, ColConst и RowConst - они находятся в файле `libs/main/containers/pivector2d.h` ### 1.2 Изменить класс Row - Наследовать от RowConst: `class Row : public RowConst` - Убрать дублирующиеся методы (они унаследованы от RowConst): - size() - toVector() - operator[] (const версия) - data() (const версия) - indexOf() - lastIndexOf() - indexWhere() - lastIndexWhere() - forEach() (const версия) - contains() - entries() - any() - every() - Сохранить неконстантные методы: - operator[] (неконстантный) - data() (неконстантный) - operator=() - forEach() (неконстантный) - fill() ### 1.3 Изменить класс Col - Наследовать от ColConst: `class Col : public ColConst` - Аналогично убрать дублирующиеся методы ### 1.4 Собрать проект - собери проект, при необходимости поправь ошибки - тесты не трогай ## Этап 2: Проверить и поправить тесты ### 2.1 Запустить тесты - Запустить: `./build/tests/pip_math_test --gtest_filter="*Vector2D*"` ### 2.2 Поправить код или тесты - внести правки в pivector2d.h --- ## Этап 3: Заменить PIPair на PIVector2DIndex ### 3.1 Создать структуру PIVector2DIndex ```cpp struct PIVector2DIndex { ssize_t row; ssize_t col; }; ``` ### 3.2 Обновить return types Методы для изменения: - indexOf() -> возвращает PIVector2DIndex вместо PIPair - lastIndexOf() - indexWhere() - lastIndexWhere() ---