1.对于字符串数组,可以用strlen( )函数来获取字符串数组的长度。
如:
char a1[] = "fwegwe";
cout << strlen(a1) << endl;
2.对于一般的数组,如:int a[ ] = { 40,45,438,12,46,899,450,321,210,785 ,10,57};
可以用sizeof(a)/sizeof(a[0])来获取数组的长度。
原理:sizeof()函数可以返回数组所占的内存,而sizeof(a[0])返回的是数组第一个元素所占的内存。
所以式子:sizeof(a)/sizeof(a[0])得到的就是数组的个元素个数,也就是数组的长度。
在C++中,如果要多次获取不同数组的长度,为了避免重复写代码,可以定义一个求数组长度的模板。
template <class T>
int getlength(T& array)
{
return (sizeof(array) / sizeof(array[0]));
}
以后再使用时用getlength( )函数即可得到数组的长度。
int a[] = { 40,45,438,12,46,899,450,321,210,785 ,10,57};
cout << "数组的长度为:"<<getlength(a)<< endl;
3.对于一个一维动态数组,可以使用.size()函数来获取数组的个数。
还是用上面的数组 a[ ],加入一个判断,将大于50的值存入动态数组b。然后获取b的大小。
下面是完整代码:
#include "iostream""
#include "vector"
using namespace std;
template <class T> //定义获取数组大小的模板
int getlength(T& array)
{
return (sizeof(array) / sizeof(array[0]));
}
int main()
{
int a[] = { 40,45,438,12,46,899,450,321,210,785 ,10,57};
vector<int> b; //创建动态数组b
for (int i = 0; i < getlength(a); i++)
{
if (a[i] > 50)
b.push_back(a[i]); //向动态数组中加入元素
}
for (int i = 0; i < b.size(); i++)
{
cout << b[i] << " " << endl;
}
cout <<"数组中的元素个数为: "<<b.size()<<endl;
return 0;
}