Таблица
Условие
Вам надо написать шаблонный класс Table для электронной таблицы. Для простоты будем считать, что все ячейки таблицы имеют один и тот же тип данных T. Таблица должна уметь менять свой размер по требованию пользователя. Вновь созданные ячейки должны заполняться значениями по умолчанию типа T.
Требования к классу такие:
- Класс должен называться
Table - У класса должен быть шаблонный параметр
T- тип элемента в ячейке - У класса должен быть конструктор, получающий на входе два числа типа
size_t, - количество строк и столбцов соответственно - У класса должны быть константная и неконстантная версии оператора
[], возвращающего нечто такое, к чему снова можно было бы применить оператор[]. То есть, должны работать конструкции видаcout << table[i][j];иtable[i][j] = value;. Проверять корректность индексов при этом не нужно - У класса должна быть функция
Resize, получающая на вход два параметра типаsize_tи меняющая размер таблицы. Старые данные, умещающиеся в новый размер, должны при этом сохраниться - У класса должен быть константный метод
Size, возвращающийstd::pair<size_t, size_t>размер таблицы (в том же порядке, в котором эти аргументы передавались в конструктор)
Как тестировать локально
Собрать программу с помощью cmake и запустить ctest:
mkdir build; cd build
cmake ..; cmake --build .
ctest -V