怎么用c++完成二维数组的转置

如题,一定要是c++的


#include <iostream>
using namespace std;
void printA(int a[100][100], int n){
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            printf("%d ",a[i][j]);
        }
        printf("\n");
    }
}
int main() {
    int a[100][100];
    int n=10;
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            a[i][j]=i*n+j+1;
        }
    }
    printA(a,n);
    printf("转置\n");
    int tmp;
    for(int i=0;i<n;i++){
        for(int j=0;j<i;j++){
            tmp = a[i][j];
            a[i][j]=a[j][i];
            a[j][i]=tmp;
        }
    }
    printA(a,n);
    return 0;
}