#include #include #include using namespace std; template class SquareMatrix { public: int _dimension; T *_data; SquareMatrix() { _dimension = 0; _data = nullptr; } SquareMatrix(int dimension) { _dimension = dimension; _data = new T[_dimension * _dimension]; memset(_data, 0, sizeof(T) * _dimension * _dimension); } T &operator()(int i, int j) { return _data[i * _dimension + j]; } }; template void product_1(SquareMatrix &a, SquareMatrix &b, SquareMatrix &c) { assert(a._dimension == b._dimension); assert(a._dimension == c._dimension); for (int i = 0; i < a._dimension; ++i) { for (int j = 0; j < b._dimension; ++j) { T sum = (T)0; for (int k = 0; k < a._dimension; ++k) { sum += a(i, k) * b(k, j); } c(i, j) = sum; } } } int main(int argc, char *argv[]) { return EXIT_SUCCESS; }