C++ и Python

Таблица (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