C++中求數(shù)組長度的方法詳解
C++中沒有直接提供求數(shù)組長度的方法,提供了sizeof(),begin(),end()等方法,可以供求數(shù)組長度使用。
可以通過兩種方式來求數(shù)組長度,這里使用模版類。一個是使用sizeof()做除法,另一種辦法是通過end(),begin()做減法。代碼如下。
#include <iostream>
#include <string>
using namespace std;
template <class T>
int getArrSize(T& arr){
return sizeof(arr) / sizeof(arr[0]);
}
template <class T>
int getArrLength(T& arr){
return end(arr) - begin(arr);
}
int main(){
string arr[] = {"a","b","c","e","f"};
int arr2[] = {1,3,4,5};
//string arr
cout<<"sizeof(arr): "<<sizeof(arr)<<endl;
cout<<"sizeof(arr[0]): "<<sizeof(arr[0])<<endl;
cout<<"end(arr): "<<end(arr)<<endl;
cout<<"begin(arr): "<<begin(arr)<<endl;
cout<<"size of arr: "<<getArrSize(arr)<<endl;
cout<<"length of arr:"<<getArrLength(arr)<<endl;
//int arr
cout<<"===================="<<endl;
cout<<"sizeof(arr): "<<sizeof(arr2)<<endl;
cout<<"sizeof(arr[0]): "<<sizeof(arr2[0])<<endl;
cout<<"end(arr): "<<end(arr2)<<endl;
cout<<"begin(arr): "<<begin(arr2)<<endl;
cout<<"size of arr: "<<getArrSize(arr2)<<endl;
cout<<"length of arr:"<<getArrLength(arr2)<<endl;
return 0;
}運行結(jié)果如下:
sizeof(arr): 120
sizeof(arr[0]): 24
end(arr): 0x7fff5a35b5d8
begin(arr): 0x7fff5a35b560
size of arr: 5
length of arr:5
====================
sizeof(arr): 16
sizeof(arr[0]): 4
end(arr): 0x7fff5a35b560
begin(arr): 0x7fff5a35b550
size of arr: 4
length of arr:4
對于第一種求數(shù)組長度的辦法,可能不是很明白,為什么需要sizeof()之后,需要除以sizeof(arr[0])。這里有幾點需要注意:
1、sizeof不是函數(shù),是操作符,它是編譯時求一個類型所占的字節(jié)數(shù)。
2、sizeof(arr):以長度4的int數(shù)組為例,其實求出了int類型數(shù)組所占總長度4*4=16。然后需要按照任意一個類型長度其實就是4來做除法。
到此這篇關(guān)于C++中求數(shù)組長度的方法詳解的文章就介紹到這了,更多相關(guān)C++中求數(shù)組長度內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語言中求余弦值的相關(guān)函數(shù)總結(jié)
這篇文章主要介紹了C語言中求余弦值的相關(guān)函數(shù)總結(jié),包括求余弦和雙曲線余弦以及反余弦的求值,需要的朋友可以參考下2015-08-08
Matlab控制電腦攝像實現(xiàn)實時人臉檢測和識別詳解
人臉識別過程主要由四個階段組成:人臉檢測、圖像預(yù)處理、面部特征提取和特征識別。這篇文章主要介紹了如何使用MATLAB控制筆記本電腦的攝像頭,并進(jìn)行實時人臉檢測和識別,需要的可以參考一下2022-10-10

