How to transpose a matrix (swap rows and columns) in C++

2 Answers

0 votes
#include <iostream>

void transposeMatrix(int rows, int cols, int matrix[][3], int result[][3]) {
    for (int i = 0; i < rows; i++)
        for (int j = 0; j < cols; j++)
            result[j][i] = matrix[i][j];
}

int main() {   
    int matrix[3][3] = {
        {1, 2, 3},
        {4, 5, 6},
        {7, 8, 9}
    };

    int transpose[3][3] = {{0}};

    size_t rows = sizeof matrix / sizeof matrix[0];
    size_t cols = sizeof matrix[0] / sizeof matrix[0][0];

    transposeMatrix(rows, cols, matrix, transpose);

    for (int i = 0; i < cols; i++) {
        for (int j = 0; j < rows; j++)
            std::cout << transpose[i][j] << " ";
        std::cout << "\n";
    }
}


/*
run:

1 4 7 
2 5 8 
3 6 9 

*/

 



answered Jan 18, 2021 by avibootz
edited 1 day ago by avibootz
0 votes
#include <iostream>
#include <vector>

std::vector<std::vector<int>> transpose(const std::vector<std::vector<int>>& matrix) {
    if (matrix.empty()) return {};

    size_t rows = matrix.size();
    size_t cols = matrix[0].size();
    std::vector<std::vector<int>> result(cols, std::vector<int>(rows));

    for (size_t i = 0; i < rows; ++i)
        for (size_t j = 0; j < cols; ++j)
            result[j][i] = matrix[i][j];

    return result;
}

int main() {
    std::vector<std::vector<int>> matrix = {
        {1, 2, 3},
        {4, 5, 6}
    };

    auto transposed = transpose(matrix);

    for (const auto& row : transposed) {
        for (int val : row)
            std::cout << val << " ";
        std::cout << "\n";
    }
}



/*
run:

1 4 
2 5 
3 6 

*/



 



answered Jun 26, 2025 by avibootz
...