對於一個維數組,
template<typename T, size_t N>
size_t size_of_array(T (&)[N])
{
return N;
}
int arr[]={1,2,2,3,4,4,4,54,5};
cout << size_of_array(arr) << endl;
A a[] = {A(),A(), A(), A(), A()};
cout << size_of_array(a) << endl;
輸出:
9
5
全部演示在Ideone:http://ideone.com/tpWk8
編輯:
另一種方式(後看到你的編輯),
template<typename T>
struct get_dim;
template<typename T, size_t N>
struct get_dim<T[N]>
{
static const int value = N;
};
int main()
{
cout << get_dim<int[100]>::value;
return 0;
}
輸出:
100
http://ideone.com/wdFuz
編輯:
對於二維陣列:
struct size2D
{
size_t X;
size_t Y;
};
template<typename T, size_t M, size_t N>
size2D size_of_array(T (&)[M][N])
{
size2D s = { M, N};
return s;
}
int arr[][5]={ {1,2,2,5,3}, {4,4,4,54,5}} ;
size2D size = size_of_array(arr);
cout << size.X <<", "<< size.Y << endl;
輸出:
2, 5
代碼:http://ideone.com/2lrUq
我不確定你在問什麼。你能否更好地描述問題和限制?或者,也許是一個解決方案的例子,如果你有一個局部的想法? – Karmastan 2011-03-07 19:41:06
稍作努力**搜索重複**。 * [C++]數組大小*在搜索框中將提供多種解決方案。我可以在這裏粘貼解決方案並獲得一些代表。但請僅做點半點努力**,你已經在這個網站上搜索了足夠長的時間來嘗試自己搜索。 – 2011-03-07 19:45:28
@David讓你來這裏回答問題或向人們展示他們無法搜索等等。 – 2011-03-07 19:57:53