Пришлось делать групповой проект. Его идея состоит в том, чтобы сделать все математические свойства на двух матрицах (сложение, умножение, транспонирование, вычитание), но нам пришлось использовать шаблоны и векторы.
Моя проблема / беспокойство в том, что если это будет реализовано не с помощью векторов или шаблонов, как я могу это сделать?
Например, эта часть:
//Matrix is the class name,mtrx is a private vector in the class
Matrix<T> Matrix<T>::operator+(const Matrix<T>& obj){
Matrix<T> res(*this);
int r1,c1,r2,c2;
r1 = mtrx.size();
c1 = mtrx[0].size();
r2 = obj.mtrx.size();
c2 = obj.mtrx[0].size();
if (r1==r2 && c1==c2){
for(int i = 0; i < r1; i++){
for(int j = 0; j < c1; j++){
res.mtrx[i][j] += obj.mtrx[i][j];
}
}
return res;
}
throw invalid_argument("Cannot add, matrices don't have same dimensions");
}
Спасибо за ваш ответ. Но у меня есть небольшой вопрос по левому и правому краям, которые вы имеете в виду, как первую и вторую матрицу? @ Jean-MichaëlCelerier
Да - это сокращение для левой и правой стороны, имея в виду то, что вы бы написали: matrixA + matrixB;





> «Моя проблема / беспокойство в том, что если это будет реализовано не с помощью векторов или шаблонов, как я могу это сделать?» вы этого не сделаете. На более слабых языках без дженериков вам придется дублировать свой код для каждого типа:
void add_matrix_int(matrix_int* lhs, matrix_int* rhs, matrix_int** res);void add_matrix_float(matrix_float* lhs, matrix_float* rhs, matrix_** res);, например, в C89