C++ 中计算数组长度
2016-01-14 22:35
267 查看
C、C++中没有提供直接获取数组长度的函数,对于存放字符串的字符数组提供了一个strlen函数获取长度,那么对于其他类型的数组如何获取他们的长度呢?
其中一种方法是使用sizeof(array) / sizeof(array[0]), 在C语言中习惯上在使用时都把它定义成一个宏,比如
#define GET_ARRAY_LEN(array,len) {len = (sizeof(array) / sizeof(array[0]));}
而在C++中则可以使用模板技术定义一个函数,比如:
template <class T>
int getArrayLen(T& array)
{
return (sizeof(array) / sizeof(array[0]));
}
还有一种看起来比较高级的做法:
template<typename T,size_t N>
void print_length(T (&m)
)
{
std::cout<<"the length of array is "<<N<<std::endl;
}
使用sizeof(array)/sizeof(array[0]) 是比较直接的做法, 用总的长度除以单个元素长度就得到长度
后一种方法看起来更高级一点,应该是有编译器在实例化模板函数时隐式的使用了直接的做法,得出了数组的长度
只要知道数组名(首地址)和元素类型就可以知道数组长度。
其中一种方法是使用sizeof(array) / sizeof(array[0]), 在C语言中习惯上在使用时都把它定义成一个宏,比如
#define GET_ARRAY_LEN(array,len) {len = (sizeof(array) / sizeof(array[0]));}
而在C++中则可以使用模板技术定义一个函数,比如:
template <class T>
int getArrayLen(T& array)
{
return (sizeof(array) / sizeof(array[0]));
}
还有一种看起来比较高级的做法:
template<typename T,size_t N>
void print_length(T (&m)
)
{
std::cout<<"the length of array is "<<N<<std::endl;
}
使用sizeof(array)/sizeof(array[0]) 是比较直接的做法, 用总的长度除以单个元素长度就得到长度
后一种方法看起来更高级一点,应该是有编译器在实例化模板函数时隐式的使用了直接的做法,得出了数组的长度
只要知道数组名(首地址)和元素类型就可以知道数组长度。
相关文章推荐
- 传统线程调用
- 一起talk C栗子吧(第一百零一回:C语言实例--使用信号量进行进程间同步与互斥二)
- const限定符和constexpr说明符--C++11
- 使用单指针实现双链表(C++语言)
- C语言中的顺序点
- 搜索+剪枝——运筹帷幄 (road.cpp)
- UVA 10008 whats cryptanalysis 水题
- 使用doxygen为C/C++程序生成中文文档
- c++里的指数、对数等
- C++指针数组、数组指针、数组名及二维数组技巧汇总
- 一起talk C栗子吧(第一百回:C语言实例--使用信号量进行进程间同步与互斥一)
- VC++ 通过域名与服务器通信
- c++之路进阶——treap树(普通平衡树)
- c++ string trim
- c++之路进阶——treap树(郁闷的出纳员)
- 关于在ubuntu下eclipse中c++11支持和编译运行c++11报错的解决方法
- C语言实现封装、继承和多态
- c++之路进阶——块状链表(弹飞绵羊)
- 适配器模式 C++实现
- 基于 intel MKL 的对称矩阵特征值求解器