阅读量:0
在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()
函数对其进行转置。最后,我们打印出原始矩阵和转置后的矩阵。