У меня есть матрица смежности, реализованная следующим образом:
struct Matrix {
int m_row;
int m_col;
float m_val;
};
vector<Matrix> matrix;
У меня есть вектор структуры, который хранит значения, строки и столбцы, только если значение отличается от 0. Я хотел бы реализовать оператор *, в котором я умножил свою матрицу на вектор. Моя получающаяся матрица смежности это следующая:
Матрица смежности , первый параметр - строка, второй столбец и последнее значение.
Мой вектор имеет 10 позиций и все значения 1.
Это мой оператор * (это не работает правильно, не получает правильный результат):
vector<float> SparseMatrix::operator*(const vector<float> x) const {
vector<float> result(x.size(), 0);
for (int i = 0; i < m_Nrows; i++) //m_Nrow --> Number of rows.
{
for (int j = 0; j < m_Ncol; j++) {
result[i] += (matrix[i].m_val * x[j]);//m_Ncol --> Number of columns
}
}
return result;
}