百度面试一题,通过函数求出int数组长度
2015-01-13 14:15
218 查看
正题:一个int型数组
int a[] = {/*...*/};
可不可以通过函数来求出它的长度?
int len = size(a);这样的?
我当时回答的是不可以,函数参数只能传指针,长度不能传。如果是字符串的话可以通过'\0'判断,但是int数组不行。然后他又问我想通过函数获得长度怎么办?我当时回答貌似没有办法(我想告诉他多传个长度的参数又不会怀孕,不过没敢说)。
确实没有办法吗?我是在网上找了半天都没找到。
解法1:
template<typename?T,?std::size_t?N>
constexpr?std::size_t?size(T(&a)
)?{
????return?N;
}
解法2:
WinNT.h中的实现
#define ARRAYSIZE(A) RTL_NUMBER_OF_V2(A)
extern "C++" // templates cannot be declared to have 'C' linkage
template <typename T, size_t N>
char (*RtlpNumberOf( UNALIGNED T (&)
))
; #define RTL_NUMBER_OF_V2(A) (sizeof(*RtlpNumberOf(A)))
int a[] = {/*...*/};
可不可以通过函数来求出它的长度?
int len = size(a);这样的?
我当时回答的是不可以,函数参数只能传指针,长度不能传。如果是字符串的话可以通过'\0'判断,但是int数组不行。然后他又问我想通过函数获得长度怎么办?我当时回答貌似没有办法(我想告诉他多传个长度的参数又不会怀孕,不过没敢说)。
确实没有办法吗?我是在网上找了半天都没找到。
解法1:
template<typename?T,?std::size_t?N>
constexpr?std::size_t?size(T(&a)
)?{
????return?N;
}
解法2:
WinNT.h中的实现
#define ARRAYSIZE(A) RTL_NUMBER_OF_V2(A)
extern "C++" // templates cannot be declared to have 'C' linkage
template <typename T, size_t N>
char (*RtlpNumberOf( UNALIGNED T (&)
))
; #define RTL_NUMBER_OF_V2(A) (sizeof(*RtlpNumberOf(A)))
相关文章推荐
- 请编程实现:产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复(百度了一下,get一种高性能算法,非递归)
- 百度面试 在一个int数组中找这样一种数
- 请编程实现:产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复(百度了一下,get一种高性能算法,非递归)
- 面试题目产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。
- c中自定义函数通过sizeof来输出数组的长度为何不正确?【原创】
- 阿里巴巴面试算法题:有一个函数int getNum(),每运行一次可以从一个数组V[N]里面取出一个数,N未知,当数取完的时候,函数返回NULL。现在要求写一个函数int get(),这个函数运行一次可以从V[N]里随机取出一个数,而这个数必须是符合1/N
- 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复
- 将PHP数组赋值给JS通过php系统函数json_encode()来实现
- 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复
- 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复
- 在PostMessage或SendMessage中通过WPARAM或者LPARAM将数组传递给消息处理函数
- C语言 通过指针从函数返回一个数组
- 求传入函数中的数组长度
- php数组函数序列之array_push() 数组尾部添加一个或多个元素(入栈),返回新长度。
- 编程产生一个int数组,长度为30,并向其中随机插入1-30,并且不能重复输出数组。实现一个冒泡排序算法对其进行排序,输出排序结果
- 【大家来一起讨论吧】百度面试题,假设一整型数组存在若干正数和负数,现在通过某种算法使得该数组的所有负数在正数的左边,且保证负数件和正数间元素相对位置不变。时空复杂度要求:o(n),o(1)
- 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复 的另一种写法
- 产生一个int数组,长度为10,并向其中随机插入1-10,并且不能重复
- 【转】产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复
- 关于一道 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复