将指针交换到指针

Pho*_*nix 2 c++

在我编写的这个程序中,我使用2个矩阵声明为指针指针.最初,矩阵B等于矩阵A,所有的变化都是对矩阵B进行的(我不需要修改A中的值,因为我使用这些值来计算其他东西,如果我直接修改它,我实际上得到了错误的结果).最后,我需要交换两个矩阵中的值.我的程序已经在运行和编译,但要交换我用过的矩阵

for(i=0;i<n;++i)
    for(j=0;j<n;++j)
        A[i][j]=B[i][j];
Run Code Online (Sandbox Code Playgroud)

我知道这不是最好的方法,所以我想知道是否有办法通过指针交换我的矩阵.我已经尝试过自己做了.但我是C++编程的新手,我似乎无法做到这一点:(.

这是我的代码草图:

void swap(int **A, int **B){
?
}

main (){
int **A, **B;
*code*
swap(A,B);
}
Run Code Online (Sandbox Code Playgroud)

Lig*_*ica 6

C++已经为我们提供了一个swap函数:

int main()
{
   int** A;
   int** B;

   /* ... code ... */

   std::swap(A, B);   
}
Run Code Online (Sandbox Code Playgroud)

它在这种特殊情况下的作用基本上是这样的:

void swap(int**& lhs, int**& rhs)
{
   int** tmp;

   tmp = lhs;
   lhs = rhs;
   rhs = tmp;
}
Run Code Online (Sandbox Code Playgroud)

或者,使用指针而不是引用:

void swap(int*** lhs, int*** rhs)
{
   int** tmp;

   tmp = *lhs;
   *lhs = *rhs;
   *rhs = tmp;
}
Run Code Online (Sandbox Code Playgroud)

最后一个,你打电话swap(&A, &B)(注意&).

那说,为什么所有这些指针呢?你是C++.使用容器.

至少考虑使用真正的数组,因为我严重怀疑这种类型int**正在做你认为它正在做的事情.