【问题标题】:Multidimensional Array c++ [duplicate]多维数组c ++ [重复]
【发布时间】:2012-01-17 22:12:28
【问题描述】:

可能重复:
Multi-dimensional array in C++

我需要创建一个具有一个参数的函数,该参数是一个多维数组,其中二维是用户指定的,例如

    int function(int a, int b, int array[a][b])
    {
     ...

    }

我将如何在 C++ 中做到这一点?

【问题讨论】:

  • 您的旧问题应该很快就会重新打开。

标签: c++ arrays function multidimensional-array


【解决方案1】:

你可以用模板做这样的事情:

template <int A, int B>
int function(int array[A][B])
{
 ...
}

请注意,这会为您使用的每个数组大小生成一个代码块。您可以通过将外部维度作为函数参数而不是模板参数传递来稍微优化(您无法更改内部维度,因为您不能拥有一个未知大小的数组)。

编辑:正如在重复错误中指出的那样,我的模板数组语法错误。

【讨论】:

  • 这不满足“用户指定”部分,因为AB 应该在编译时指定。
  • @Mr.TAMER 取决于您对用户的定义,我猜 - 我假设他的意思是呼叫者。
【解决方案2】:

你必须通过参数传递大小。
int function(int a, int b, int array[][])
C++ 中没有 length() 方法或类似的方法。如果你传递一个数组,它只是一个链接。这与int function(int a, int b, int** array)相同
编辑:
请注意,如果您使用方括号而不是星号,则必须提供除第一个尺寸之外的所有尺寸的尺寸。实际上,您正在传递数组数组,编译器必须知道每个数组的大小。

【讨论】:

  • 我试过了,但它给了我错误:将“函数”声明为多维数组必须对除第一个维度之外的所有维度都有边界
  • 尝试使用 int**。它是对您的矩阵的引用,应该可以工作。等等,我会编辑我的答案。
  • 不,这行不通。 int 的二维数组不能衰减到 int**
猜你喜欢
  • 2018-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-23
  • 1970-01-01
相关资源
最近更新 更多