我有一个问题,我似乎无法找到答案,除了一些“它不可能”,但它绝对必须是可能的,所以我想我会试着解释。
基本上我有一个问题,我从文件读取多个迭代A然后调整x和y的大小。在函数中,我像这样传递x和y:
//Really bad pseudocode
main(){
int i;
ifstream input;
input.open("somefile")
input >> A;
input >> x;
input >> y;
for(i = 0; i < A; i++){
somefunc(x,y);
}
...}
somefunc(int x, int y){
int matrix[x][y];
...
someotherfunc(matrix);
...}
someotherfunc(int matrix[][]){
...
someotherfunc(matrix[index][otherindex]);
...}
所以我的问题是,如何调用“someotherfunc”以上工作。我使用x和y作为矩阵的可变大小的大小。这些每次迭代的变化A.在一次运行中,它可以作为int矩阵[1] [10]。然后在另一个可能的矩阵[100] [999]或矩阵[999] [1235415]等等。
什么样的伎俩,我不在乎它是怎么“糟糕的做法”,可以让这个工作吗?我试图绕过使用一个矩阵,该矩阵具有一个在“somefunc”中动态分配的int **成员,但是对它的赋值将无论出于何种原因都不起作用。我需要能够定义一个多维数组(矩阵)并在函数之间传递它,特别是以递归方式。我已经在这几个小时,并没有取得进展。
在提到它之前,我很清楚我没有检查文件是否成功打开,我故意这样做,因为它与我的问题完全无关。
我发现这个问题的答案非常复杂,但肯定有一些解决方案。
关于此的进一步信息是我无法提前知道输入的最大X或Y是什么。
我想我可以使用像2147483647这样的常量全局变量(有符号整数的最大值)并像'int matrix [2147483647] [2147483647]那样初始化矩阵,但这似乎是一种几乎是空间的浪费,当然还有必要做一个更好的方法。