Класс для хранения трехмерного массива 17-битных положительных целых чисел, обладающий следующими свойствами:
- обращение к элементу массива за O(1) по времени и по памяти (реализация может использовать константный объем доп памяти, не зависящий от размера массива)
- операторы ввода и вывода
- умножение на число, где результат это новый массив
- сложение и вычитание двух массивов, где результат также является новым массивом (размеры по всем трем осям должны совпадать, в противном случае UB)
- статический метод для создания массива, принимающий три положительных числа в качестве его размеров
- Результат представляет собой библиотеку
- Класс покрыт тестами, при этом в качестве фреймворка для написания тестов используется GoogleTest
- Использование стандартной библиотеки сведено к использованию операторов ввода и вывода
- Ограничение по памяти на класс - (x * y * z * 17)/8 + const, где x, y, z - размер массива, const - некоторая константа
Пример использования:
YourClassName arr = YourClassName::make_array(10, 2, 30);
arr[4][3][2] = 100500;
std::cout << arr[4][3][2];