在C++中将不同大小的常量数组作为函数参数传递

Ami*_*in1 5 c c++ visual-c++

我有不同大小的恒定多维数组.我想将它们传递给一个函数.但是,我会得到错误的下标,数组的大小不同所以我不能把下标放在数组参数中.这个问题的解决方案是什么?

这是一个示例代码.实际的数组更大.

//ARRAY1
const double ARRAY1[3][2][2] =
{
    {
        {1.0,1.0},
        {1.0,1.0},
    }
    ,
    {
        {1.0,1.0},
        {1.0,1.0},
    }
    ,
    {
        {1.0,1.0},
        {1.0,1.0},
    }
}
//ARRAY2
const double ARRAY2[2][2][2] =
{
    {
        {1.0,1.0},
        {1.0,1.0},
    }
    ,
    {
        {1.0,1.0},
        {1.0,1.0},
    }
}

//How to declare the parameter?
double SomeFunctionToWorkWithBothArrays(const double arr[][][])
{

}
Run Code Online (Sandbox Code Playgroud)

Pup*_*ppy 14

你可以使用一个模板.

template<size_t first, size_t second, size_t third> 
double SomeFunction(const double (&arr)[first][second][third]) {
    return first + second + third;
}
Run Code Online (Sandbox Code Playgroud)

此函数引用三维双精度数组,其中所有维在编译时都是已知的.如果绝望,实际上可以通过模板获取此参考.


Jon*_*Jon 5

使用std::vector而不是数组.向量知道自己的大小,所以这没有问题.您可以使用矢量矢量作为多维数组.