#include <bits/stdc++.h>
using namespace std;
int M;
int N;
int K;
int temp=0;
void leftrotate(int A[M][N])
{
for(int i=0;i<M;i++)
{
temp=A[i][0];
int j;
for(j=0;j<N-1;j++)
{
A[i][j]=A[i][j+1];
}
A[i][j]=temp;
}
for(int i=0;i<M;i++)
{
for(int j=0;j<N;j++)
{
cout<<A[i][j];
}
}
}
int main()
{
int T;
cin>>T;
while(T--)
{
cin>>M;
cin>>N;
cin>>K;
int A[M][N];
for(int i=0;i<M;i++)
{
for(int j=0;j<N;j++)
{
cin>>A[i][j];
}
}
leftrotate(A);
}
return 0;
}
正如您在 main 函数中看到的,m 和 n 的值是动态获取的,所有变量都是全局定义的。现在我需要使用二维数组作为参数调用函数 leftrotate
。
使用或不使用指针的方法是什么?
最佳答案
对于多维动态数组,您可以使用:
vector<vector<int>> A
或
int **A
示例:
void leftrotate(int **A)
{
for(int i=0;i<M;i++)
{
temp=A[i][0];
int j;
for(j=0;j<N-1;j++)
{
A[i][j]=A[i][j+1];
}
A[i][j]=temp;
}
for(int i=0;i<M;i++)
{
for(int j=0;j<N;j++)
{
cout<<A[i][j];
}
}
}
int main()
{
int T;
cin>>T;
while(T--)
{
cin>>M;
cin>>N;
cin>>K;
int **A = new int*[M];
for(int i = 0; i < M; i++)
A[i] = new int[N];
for(int i=0;i<M;i++)
{
for(int j=0;j<N;j++)
{
int p;
cin>>p;
A[i][j] = p;
}
}
leftrotate(A);
for(int i = 0; i < M; ++i) {
delete [] A[i];
}
delete [] A;
}
return 0;
}
关于c++ - 将二维数组传递给 c++ 中的函数,两个值都在 main 方法中输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46430574/