#include<iostream>
using namespace std;
void transpose(const int input[2][3], int (&output)[3][2]){
for(int i=0; i<2; ++i) {
for(int j=0; j<3 ; ++j) {
output [j][i] = input [i][j];
}
}
}
void printMultiArray(const int multi[2][3], const int len){
for (int row=0; row<2; row++){
for (int col=0; col<3; col++){
cout << multi[row][col] << " " ;
}
cout << endl;
}
}
int main(){
int multi[2][3] = {{1, 2, 3}, {7, 8, 9}};
int empty[3][2];
printMultiArray(multi, 6);
cout << "... space line ..." << endl;
transpose(multi, empty);
printMultiArray(empty, 6);
return 0;
}
我有上面的代码来转置一个 2x3 数组......但它没有编译并且失败:
6-3-transposeArray.cpp: In function ‘int main()’:
6-3-transposeArray.cpp:33: error: cannot convert ‘int (*)[2]’ to ‘const int (*)[3]’ for argument ‘1’ to ‘void printMultiArray(const int (*)[3], int)’
我不确定问题是什么。似乎在抱怨 transpose() 的第一个参数,但 printMultiArray() 似乎对以相同方式传递的数组没有问题。
其次,是否有更通用的方法来实现这一点?(例如,一个可以接收 2x3、2x4 和 2x5 数组并返回每个数组的转置的通用函数)
一个基本的问题,但任何帮助表示赞赏:)