C++ Program To Find Transpose of a Matrix
Last Updated :
23 Jul, 2025
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:

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++
// C++ Program to find the transpose
// of a matrix
#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;
}
OutputResult matrix is
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
The complexity of the above method
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++
// C++ program to find transpose
// of a matrix
#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;
}
OutputResult matrix is
1 2 3
1 2 3
1 2 3
1 2 3
The complexity of the above method
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++
// C++ program to implement
// the above approach
#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);
printf("Modified matrix is \n");
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N; j++)
printf("%d ", A[i][j]);
printf("\n");
}
return 0;
}
OutputModified matrix is
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
The complexity of the above method
Time complexity: O(n)
- Transpose has a time complexity of O(n + m), where n is the number of columns and m is the number of non-zero elements in the matrix.
- The computational time for transposing of a matrix using an identity matrix as a reference matrix is O(m*n).
- Suppose, if the given matrix is a square matrix, the running time will be O(n2).
Auxiliary space: O(1).
Similar Reads
Interview Preparation
Practice @Geeksforgeeks
Data Structures
Algorithms
Programming Languages
Web Technologies
Computer Science Subjects
Data Science & ML
Tutorial Library
GATE CS