物聯(lián)網(wǎng)/嵌入式工程師
重磅升級(jí):新增硬件電路設(shè)計(jì)與實(shí)戰(zhàn),讓你軟硬通吃,同級(jí)PK無(wú)敵!行業(yè)風(fēng)口、政策傾斜,新晉熱門(mén)高薪不內(nèi)卷!0基礎(chǔ)一站式就業(yè)完整路徑,搶占先發(fā)優(yōu)勢(shì)!
矩陣是我們常用的數(shù)學(xué)工具,請(qǐng)你編寫(xiě)一個(gè)矩陣的工具類(lèi),要求包含矩陣的乘法功能,當(dāng)然,拷貝也是必要的
class Mat { public: int row = 0; int col = 0; float * * mat = nullptr; private: void init(int row, int col) { if (row && col) { mat = new float*[row]; for (int i = 0; i < row; i++) { mat[i] = new float[col]; for (int j = 0; j < col; j++){ mat[i][j] = 0; if(i == j){ mat[i][j] = 1; } } } } } public: Mat(int row = 0, int col = 0) { this->row = row; this->col = col; init(row, col); } Mat(const Mat &m) { this->row = m.row; this->col = m.col; init(row, col); for (int i = 0; i < row; i++){ for (int j = 0; j < col; j++){ mat[i][j] = m.mat[i][j]; } } } ~Mat() { if (mat != nullptr) { for (int i = 0; i < row; i++){ if (mat[i]) { delete[] mat[i]; mat[i] = nullptr; } } if (mat){ delete[] mat; } mat = nullptr; } } Mat & operator = (const Mat &m) { if (mat != nullptr) { for (int i = 0; i < row; i++){ if (mat[i]) { delete[] mat[i]; mat[i] = nullptr; } } if (mat){ delete[] mat; } mat = nullptr; } row = m.row; col = m.col; init(row, col); for (int i = 0; i < row; i++){ for (int j = 0; j < col; j++){ mat[i][j] = m.mat[i][j]; } } return *this; } Mat operator * (const Mat &m) { EyerMat res(row, m.col); for (int i = 0; i < res.row; i++) { for (int j = 0; j < res.col; j++) { res.mat[i][j] = 0.0f; } } if (m.row != col){ } else { for (int i = 0; i < res.row; i++) { for (int j = 0; j < res.col; j++) { for (int k = 0; k < res.row; k++) { res.mat[i][j] += mat[i][k] * m.mat[k][j]; } } } } return res; } }
請(qǐng)驗(yàn)證,完成請(qǐng)求
由于請(qǐng)求次數(shù)過(guò)多,請(qǐng)先驗(yàn)證,完成再次請(qǐng)求
打開(kāi)微信掃碼自動(dòng)綁定
綁定后可得到
使用 Ctrl+D 可將課程添加到書(shū)簽
舉報(bào)