我想創建一個函式,該函式將陣列作為 ANY 型別的引數并回傳其長度,如下例所示:
unsigned int getLength(array)
{
return sizeof(array) / sizeof(array[0])
}
我不知道是否可以在不知道陣列型別的情況下傳遞陣列,我希望我能很好地解釋我的問題,謝謝...
uj5u.com熱心網友回復:
您可以使用如下所示的模板。具體來說,我們可以使用模板非型別引數 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;
}
作業演示
注意 C 17 還有一個選項可以使用std::size.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/483020.html
上一篇:從二維陣列中洗掉一列
