C++ 一維陣列尺寸查詢
定義一個function,輸入array(不限型態),回傳array的項目數
解決方法
如果用sizeof()
會回傳byte數,每種型態也會有固定的byte數,所以拿整個陣列的長度除以每項的長度就是所求:
1 | int A[5]; //宣告一個項目數為5的整數陣列 |
但如果今天不是int呢?
因為同一個陣列內容型態相同,每項占用的byte會一樣,所以最快得出陣列每一項所占用的byte數就是取第0項的尺寸,也就是:
1 | int A[5]; //int占4 byte |
結論
1 |
解題過去寫習慣Python跟JS,陣列用len(array)或array.length()就可以了
但是C++因為嚴格的型態規定,相似函式sizeof(array)輸出的會是array用到了幾個byte,我們需要的是幾個項目而不是幾個byte,所以就得除掉每個項目的byte才對。