std::vector<std::vector<int>> 实现矩阵转置,快速的方法
时间: 2024-08-26 17:01:59 浏览: 97
在C++中,`std::vector<std::vector<int>>`用于表示二维动态数组或矩阵,要实现矩阵转置,一种快速的方法是通过迭代器或引用交换行和列。以下是一个简单的示例:
```cpp
#include <iostream>
#include <vector>
void transposeMatrix(std::vector<std::vector<int>>& matrix) {
int n = matrix.size();
if (n == 0 || n != matrix[0].size()) {
std::cout << "Invalid matrix for transposition." << std::endl;
return;
}
// 创建一个新的矩阵用于存储转置后的结果
std::vector<std::vector<int>> transposed(n, std::vector<int>(n));
// 使用两层循环交换行和列元素
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
transposed[j][i] = matrix[i][j];
}
}
// 更新原始矩阵为转置后的结果
matrix.swap(transposed);
}
// 示例
int main() {
std::vector<std::vector<int>> matrix = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
transposeMatrix(matrix);
// 打印转置后的矩阵
for (const auto& row : matrix) {
for (int elem : row) {
std::cout << elem << " ";
}
std::cout << "\n";
}
return 0;
}
```
在这个例子中,我们首先检查输入矩阵是否有效,然后创建一个新的矩阵进行转置操作。最后,我们将转置后的矩阵赋值给原矩阵,实现了原地转置。
阅读全文