91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

如何在C++中實現矩陣類的轉置

c++
小樊
97
2024-08-29 22:30:52
欄目: 編程語言

在C++中,你可以創建一個矩陣類(Matrix),然后實現一個成員函數來轉置矩陣

#include<iostream>
#include<vector>

class Matrix {
public:
    // 構造函數
    Matrix(int rows, int cols) : rows_(rows), cols_(cols), data_(rows * cols) {}

    // 獲取矩陣的行數
    int rows() const {
        return rows_;
    }

    // 獲取矩陣的列數
    int cols() const {
        return cols_;
    }

    // 訪問矩陣元素
    double& operator()(int row, int col) {
        return data_[row * cols_ + col];
    }

    // 訪問矩陣元素(常量版本)
    double operator()(int row, int col) const {
        return data_[row * cols_ + col];
    }

    // 轉置矩陣
    Matrix transpose() const {
        Matrix result(cols_, rows_);
        for (int i = 0; i< rows_; ++i) {
            for (int j = 0; j< cols_; ++j) {
                result(j, i) = (*this)(i, j);
            }
        }
        return result;
    }

private:
    int rows_;
    int cols_;
    std::vector<double> data_;
};

int main() {
    Matrix matrix(2, 3);
    matrix(0, 0) = 1.0;
    matrix(0, 1) = 2.0;
    matrix(0, 2) = 3.0;
    matrix(1, 0) = 4.0;
    matrix(1, 1) = 5.0;
    matrix(1, 2) = 6.0;

    Matrix transposed = matrix.transpose();

    std::cout << "原始矩陣:"<< std::endl;
    for (int i = 0; i< matrix.rows(); ++i) {
        for (int j = 0; j< matrix.cols(); ++j) {
            std::cout<< matrix(i, j) << " ";
        }
        std::cout<< std::endl;
    }

    std::cout << "轉置矩陣:"<< std::endl;
    for (int i = 0; i< transposed.rows(); ++i) {
        for (int j = 0; j< transposed.cols(); ++j) {
            std::cout<< transposed(i, j) << " ";
        }
        std::cout<< std::endl;
    }

    return 0;
}

這個示例中,我們定義了一個名為Matrix的類,它包含一個std::vector<double>類型的數據成員來存儲矩陣元素。我們還實現了一些輔助函數,如rows()cols()operator(),以方便地訪問矩陣的行數、列數和元素。

transpose()函數是一個成員函數,用于轉置矩陣。它首先創建一個新的矩陣,其行數等于原始矩陣的列數,列數等于原始矩陣的行數。然后,它遍歷原始矩陣的所有元素,并將它們復制到新矩陣的相應位置上,從而實現轉置操作。

main()函數中,我們創建了一個示例矩陣,并使用transpose()函數對其進行轉置。最后,我們打印出原始矩陣和轉置后的矩陣。

0
新田县| 沭阳县| 丰顺县| 兰州市| 南靖县| 陵水| 昌邑市| 德安县| 柘荣县| 通渭县| 微博| 赣州市| 海宁市| 黑水县| 阳高县| 宣武区| 杨浦区| 金乡县| 贵溪市| 射阳县| 高密市| 通河县| 松江区| 健康| 六枝特区| 石阡县| 神池县| 米泉市| 玉环县| 松桃| 恩施市| 普陀区| 尼木县| 通州市| 晴隆县| 镇赉县| 沙湾县| 常山县| 汉川市| 格尔木市| 富裕县|