C++中获取静态数组和动态数组的长度

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;
}

   


猜你喜欢

转载自blog.csdn.net/kksc1099054857/article/details/78265970