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