首页 > 编程语言 > 详细

通过模板获取数组长度

时间:2014-11-07 18:21:26      阅读:107      评论:0      收藏:0      [点我收藏+]

通常在代码中我们需要获取数组长度 一种比较简单的方式是使用 sizeof 操作符 如下:

#define SizeOfArray(arr) (sizeof(arr)/sizeof((arr)[0]))

//这样使用没有问题
int a[10] = {0};
int size = SizeOfArray(a);

但是如果传入的是指针 调用SizeOfArray就会出错或者得到不正确的结果 

通常情况下如果传入的是指针指向的数组 我们希望编译器在编译的时候就能提示错误 因此提供下面这个版本 使用了c++的模板 代码如下:

template <typename T, size_t N>
inline int SizeOfArray(T (&arr)[N])
{
    return N;
}

//这样使用 没问题
int a[10] = {0};
int size = SizeOfArray(a);

//这样使用 则会编译错误
int *a = new int[10];
int size = SizeOfArray(a);

 

通过模板获取数组长度

原文:http://www.cnblogs.com/uurun/p/4081706.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!