在我编写的这个程序中,我使用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)
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**正在做你认为它正在做的事情.