在c ++中传递一个可变大小的矩阵

时间:2016-11-14 06:17:47

标签: c++ matrix struct

我有一个问题,我似乎无法找到答案,除了一些“它不可能”,但它绝对必须是可能的,所以我想我会试着解释。

基本上我有一个问题,我从文件读取多个迭代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]那样初始化矩阵,但这似乎是一种几乎是空间的浪费,当然还有必要做一个更好的方法。

0 个答案:

没有答案