C++ Program To Find Transpose of a Matrix

Last Updated : 31 Mar, 2026

Transpose of a matrix is obtained by changing rows to columns and columns to rows. In other words, the transpose of A[][] is obtained by changing A[i][j] to A[j][i].

Example:

matrix-transpose

1. For Square Matrix 

The below program finds the transpose of A[][] and stores the result in B[][], we can change N for a different dimension.  

C++
#include <bits/stdc++.h> 
using namespace std; 
#define N 4

// This function stores transpose 
// of A[][] in B[][]
void transpose(int A[][N], 
               int B[][N])
{
    int i, j;
    for (i = 0; i < N; i++)
        for (j = 0; j < N; j++)
            B[i][j] = A[j][i];
}

// Driver code
int main()
{
    int A[N][N] = {{1, 1, 1, 1},
                   {2, 2, 2, 2},
                   {3, 3, 3, 3},
                   {4, 4, 4, 4}};

    int B[N][N], i, j;

    transpose(A, B);

    cout << "Result matrix is \n";
    for (i = 0; i < N; i++)
    {
        for (j = 0; j < N; j++)
           cout << " " << B[i][j];
        cout <<"\n";
    }
    return 0;
}

Output
Result matrix is 
 1 2 3 4
 1 2 3 4
 1 2 3 4
 1 2 3 4
  • Time Complexity: O(N*N) as two nested loops are running.
  • Space Complexity: O(N*N) as 2d array is created to store transpose.

2. For Rectangular Matrix

The below program finds the transpose of A[][] and stores the result in B[][]. 

C++
#include <bits/stdc++.h>
using namespace std;
#define M 3
#define N 4

// This function stores transpose 
// of A[][] in B[][]
void transpose(int A[][N], int B[][M])
{
    int i, j;
    for(i = 0; i < N; i++)
        for(j = 0; j < M; j++)
            B[i][j] = A[j][i];
}

// Driver code
int main()
{
    int A[M][N] = {{1, 1, 1, 1},
                   {2, 2, 2, 2},
                   {3, 3, 3, 3}};

    // Note dimensions of B[][]
    int B[N][M], i, j;

    transpose(A, B);

    cout << "Result matrix is \n";
    for(i = 0; i < N; i++)
    {
        for(j = 0; j < M; j++)
            cout << " " << B[i][j];
            
        cout << "\n";
    }
    return 0;
}

Output
Result matrix is 
 1 2 3
 1 2 3
 1 2 3
 1 2 3
  • Time Complexity: O(N*M) as two nested loops are running.
  • Space Complexity: O(N*M) as 2d array is created to store transpose.

3. In-Place for Square Matrix

Below is the implementation of the method:

C++
#include <bits/stdc++.h>
using namespace std;

#define N 4

// Converts A[][] to its transpose
void transpose(int A[][N])
{
    for (int i = 0; i < N; i++)
        for (int j = i+1; j < N; j++)
            swap(A[i][j], A[j][i]);
}

// Driver code
int main()
{
    int A[N][N] = {{1, 1, 1, 1},
                   {2, 2, 2, 2},
                   {3, 3, 3, 3},
                   {4, 4, 4, 4}};

    transpose(A);

    cout << "Modified matrix is \n";
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < N; j++)
            cout << A[i][j] << " ";
        cout << "\n";
    }

    return 0;
}
Try It Yourself
redirect icon

Output
Modified matrix is 
1 2 3 4 
1 2 3 4 
1 2 3 4 
1 2 3 4 
  • Time Complexity: O(N²), as we traverse the upper triangle of the matrix using nested loops.
  • Auxiliary Space: O(1), as the transpose is done in-place without using extra space.
Comment