首页 > 代码库 > 通过模板获取数组长度
通过模板获取数组长度
通常在代码中我们需要获取数组长度 一种比较简单的方式是使用 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);
通过模板获取数组长度
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。