# План рефакторинга 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 Собрать проект - собери проект, при необходимости поправь ошибки ### 1.5 Проверить тесты - Запустить: `./build/tests/pip_math_test --gtest_filter="*Vector2D*"` --- ## Этап 2: Заменить PIPair на PIVector2DIndex ### 2.1 Создать структуру PIVector2DIndex ```cpp struct PIVector2DIndex { ssize_t row; ssize_t col; }; ``` ### 2.2 Обновить return types Методы для изменения: - indexOf() -> возвращает PIVector2DIndex вместо PIPair - lastIndexOf() - indexWhere() - lastIndexWhere() ### 2.3 Обновить тесты и документацию --- ## Этап 3: Дополнительные улучшения (опционально) - Добавить методы для работы с диапазонами - Оптимизировать методы удаления строк/столбцов - Добавить проверку границ в debug-режиме