Таблица (6)
Таблица
Условие
Вам надо написать шаблонный класс 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