C++ 在不知道其类型的情况下将数组传递给函数

C++ pass an array to a function without knowing its type

我想创建一个函数,将数组作为任何类型的参数,returns 其长度如下例所示:

unsigned int getLength(array)
{
   return sizeof(array) / sizeof(array[0])
}

我不知道是否可以在不知道其类型的情况下传递数组,我希望我能很好地解释我的问题,谢谢...

您可以使用如下所示的模板。特别地,我们可以利用模板非类型参数N来表示传递数组的长度和模板类型参数T表示数组内部元素的类型。

template<typename T, std::size_t N>
//--------------------------v--------------->type of elements inside array named arr
std::size_t getLength(const T (&arr)[N])
//-----------------------------------^------>length of the array
{
    return N ;
}

int main()
{
    int arr[] = {1,2,3};
    std::cout<<getLength(arr)<<std::endl;
    
    std::string arr2[] = {"a", "b"};
    std::cout<<getLength(arr2)<<std::endl;
    return 0;
}

Working demo


注意 C++17 还有一个使用 std::size 的选项。