一直觉得数组名传给函数的时候会退化为指针,单从一个指针无法求得数组长度. 前些时候,在网上搜了下,竟然可以利用模板来求出数组长度.实质上,是利用模板把编译器的东西读出来,很是巧妙.
代码如下:
1 template<typename T, int n>
2 inline int arr_size(T (&)[n])
3 {
4 return n;
5 }
一直觉得数组名传给函数的时候会退化为指针,单从一个指针无法求得数组长度. 前些时候,在网上搜了下,竟然可以利用模板来求出数组长度.实质上,是利用模板把编译器的东西读出来,很是巧妙.
代码如下:
1 template<typename T, int n>
2 inline int arr_size(T (&)[n])
3 {
4 return n;
5 }