转置二维数组即行列互换,可通过嵌套循环实现;固定数组直接遍历赋值,vector动态数组灵活支持任意尺寸,方阵可原地交换元素节省空间。

在C++中转置二维数组,本质是将矩阵的行和列互换。假设原数组为 matrix[i][j],转置后变为 matrix[j][i]。实现方式根据数组类型(普通数组、动态数组或使用STL)略有不同,以下是几种常用方法。
如果二维数组大小已知且固定,可以直接通过嵌套循环进行转置。
示例代码:
#include <iostream><br>using namespace std;<br><br>int main() {<br> int matrix[3][3] = {<br> {1, 2, 3},<br> {4, 5, 6},<br> {7, 8, 9}<br> };<br> int transpose[3][3];<br><br> // 转置操作<br> for (int i = 0; i < 3; ++i) {<br> for (int j = 0; j < 3; ++j) {<br> transpose[j][i] = matrix[i][j];<br> }<br> }<br><br> // 输出结果<br> cout << "转置后的数组:\n";<br> for (int i = 0; i < 3; ++i) {<br> for (int j = 0; j < 3; ++j) {<br> cout << transpose[i][j] << " ";<br> }<br> cout << endl;<br> }<br> return 0;<br>}注意:此方法适用于编译时确定大小的数组。
当数组大小在运行时才确定,推荐使用 std::vector<std::vector<int>> 来存储二维数据,并进行转置。
立即学习“C++免费学习笔记(深入)”;
示例代码:
#include <iostream><br>#include <vector><br>using namespace std;<br><br>vector<vector<int>> transposeMatrix(const vector<vector<int>>& matrix) {<br> int rows = matrix.size();<br> int cols = matrix[0].size();<br> vector<vector<int>> transpose(cols, vector<int>(rows));<br><br> for (int i = 0; i < rows; ++i) {<br> for (int j = 0; j < cols; ++j) {<br> transpose[j][i] = matrix[i][j];<br> }<br> }<br> return transpose;<br>}<br><br>int main() {<br> vector<vector<int>> matrix = {{1, 2, 3}, {4, 5, 6}};<br> auto transposed = transposeMatrix(matrix);<br><br> cout << "转置后:\n";<br> for (const auto& row : transposed) {<br> for (int val : row) {<br> cout << val << " ";<br> }<br> cout << endl;<br> }<br> return 0;<br>}这种方法灵活,支持任意行列数,且内存自动管理。
对于行数等于列数的二维数组(即方阵),可以在不使用额外数组的情况下完成转置,通过交换 matrix[i][j] 和 matrix[j][i] 实现。
for (int i = 0; i < n; ++i) {<br> for (int j = i + 1; j < n; ++j) {<br> swap(matrix[i][j], matrix[j][i]);<br> }<br>}注意内层从 j = i + 1 开始,避免重复交换导致还原。
基本上就这些常见方法。选择哪种取决于你的数组类型和是否需要原地操作。关键是理解转置就是行列索引互换。
以上就是c++++中如何转置二维数组_c++二维数组转置方法的详细内容,更多请关注php中文网其它相关文章!
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号