多维数组的矩阵转置.c++
时间: 2024-07-15 22:01:30 浏览: 147
在C++中,多维数组的矩阵转置可以通过两层循环实现,即将原矩阵的行变成列,列变成行。以下是一个简单的示例代码,展示了如何对二维数组(矩阵)进行转置:
```cpp
#include <iostream>
// 定义一个模板类,用于通用二维数组转置
template<int M, int N>
void transpose(int arr[M][N]) {
// 创建一个新的二维数组,大小为原始矩阵的列数乘以行数
int transposed[N][M];
// 遍历原矩阵的每一个元素,并将其放入新矩阵对应的位置
for (int i = 0; i < M; ++i) {
for (int j = 0; j < N; ++j) {
transposed[j][i] = arr[i][j]; // 交换行和列
}
}
// 输出转置后的矩阵
for (int i = 0; i < M; ++i) {
for (int j = 0; j < N; ++j) {
std::cout << transposed[i][j] << " ";
}
std::cout << "\n";
}
}
int main() {
// 示例使用一个3x3的整型二维数组
int matrix = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
std::cout << "Original Matrix:\n";
for (auto row : matrix) {
for (int elem : row) {
std::cout << elem << " ";
}
std::cout << "\n";
}
// 转置矩阵
transpose<3, 3>(matrix);
return 0;
}
```
在这个例子中,`transpose`函数接受一个MxN的二维数组作为参数,创建一个新的NxM数组来存储转置结果。然后通过两个嵌套循环遍历原矩阵并复制元素到新的位置。
运行这个程序,你会看到原矩阵和其转置矩阵的结果。
阅读全文