归档 2011年10月13日

最后更新于 .

C++的模板其实是个挺纠结的东西,用的不好的话,编译的一堆错误够你调到崩溃,但要是用的好呢,又确实非常方便,我们来看看

一.获取数组长度

比如

int arr[10];

怎么获取 arr 的长度呢? 最简单的代码:

uint32_t count = sizeof(arr) / sizeof(arr[0]);

但是这样也带来一个问题,万一是个新手程序员:

int *p = arr;
uint32_t count = sizeof(p) / sizeof(p[0]);

就有问题了…… 那么有没有办法,有一种安全的方法,当发现传入的是指针的时候,自动编译报错呢? 有的,模板里面可以推导出数组的长度。 所以我们可以使用如下代码

template <typename T, size_t N> 
size_t arrarysize(T (&array)[N]) { return ...

昨天

2011年9月29日

明天

2011年10月23日

归档