用STL List容器编写矩阵就地转置
时间: 2023-12-03 22:47:04 浏览: 81
矩阵转置就是将矩阵的行和列互换,可以使用STL List容器来实现。我们可以将矩阵作为一个二维List容器来存储,然后使用两个嵌套的for循环遍历矩阵,将第i行第j列的元素与第j行第i列的元素进行交换即可实现矩阵的就地转置。
以下是一个示例代码:
```c++
#include <iostream>
#include <list>
using namespace std;
// 定义矩阵类型
typedef list<list<int>> Matrix;
// 矩阵就地转置
void transpose(Matrix &matrix) {
for (auto i = matrix.begin(); i != matrix.end(); ++i) {
for (auto j = next(i); j != matrix.end(); ++j) {
swap((*i).front(), (*j).back()); // 交换第i行第j列和第j行第i列的元素
advance(i, 1); // 使i指向下一行
swap((*i).front(), (*j).back()); // 交换第i列第j行和第j列第i行的元素
advance(i, -1); // 使i回到原来的位置
}
}
}
// 打印矩阵
void printMatrix(Matrix &matrix) {
for (auto row : matrix) {
for (auto val : row) {
cout << val << " ";
}
cout << endl;
}
}
int main() {
// 初始化一个3x3的矩阵
Matrix matrix = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
cout << "原始矩阵:" << endl;
printMatrix(matrix);
transpose(matrix);
cout << "转置后矩阵:" << endl;
printMatrix(matrix);
return 0;
}
```
输出结果为:
```
原始矩阵:
1 2 3
4 5 6
7 8 9
转置后矩阵:
1 4 7
2 5 8
3 6 9
```
阅读全文