如何保存数组绑定值并在函数声明中使用它们?

时间:2013-01-30 10:48:12

标签: c++

假设我使用main()从文件中读取并占用2D数组int arr[S1][S2],其中S1S2是从文件中确定的。如果我想将此数组传递给函数,如何将多维数组编写为具有正确边界S1S2的函数参数?

int some_function(int arr_copy[S1][S2], ...);

int main()
{
/* read file and occupy arr[S1][S2] */
}

显然上述问题是因为S1S2未定义。

2 个答案:

答案 0 :(得分:3)

显而易见的解决方案是编写基于的Matrix类 std::vector,并使用它。然后你会宣布 函数对矩阵进行(可能const)引用, 并完成它。它比任何一个都容易得多 替代品,更安全。

如果您真的坚持在main中使用C样式数组,那么 您可以将该函数定义为模板:

template <size_t S1, size_t S2>
int
some_function( int const (&array)[S1][S2], ...) ...

编译器将确定S1S2的实际值 来自您传递的数组的声明。

答案 1 :(得分:1)

如果必须传递一个数组,那么该函数应该为int*和两个参数提供边界。最好为数组使用容器类,通过引用(或const引用)传递。

编辑:尽管如此,做詹姆斯推荐的模板。 : - )