C++ 当多维数组具有动态边界时,如何通过引用传递它?
我有一个int数组myArray[x][y],我希望通过引用将其传递给一个函数,但它似乎要么需要常量边界,要么需要一些奇数指针解决方法?如何正确执行此操作?具有自动存储持续时间的数组始终需要编译时常量边界。事实上,你可以做C++ 当多维数组具有动态边界时,如何通过引用传递它?,c++,C++,我有一个int数组myArray[x][y],我希望通过引用将其传递给一个函数,但它似乎要么需要常量边界,要么需要一些奇数指针解决方法?如何正确执行此操作?具有自动存储持续时间的数组始终需要编译时常量边界。事实上,你可以做int数组[x]
int数组[x]在GCC中,x
不是编译时常量,而只是一个不可移植的扩展。实际上,您不能通过引用函数来传递这样一个非标准数组
您可以随数组一起传递边界,但最好使用标准容器,如std::vector
尝试:
template<int X, int Y>
void ArrayFn( int (&in)[X][Y] )
{
in[X-1][Y-1] = 666; // or whatever
}
我已经看过了,当我尝试其中包含的变量时,它似乎没有编译,这是一个简单得多的情况,但既然它是多维的,它不是向量向量吗?@user1947180是的,它是:std::vector array(x,std::vector(y))
默认情况下是否将它们初始化为0?或者,如果您希望/需要将数组作为单个内存块,请使用单个向量并像v[x+rowLength*y]
@user1947180那样对其进行索引是的,它会这样做。
int arr[3][3];
ArrayFn( arr );