![](/img/trans.png)
[英]C++ How can I initialize array of structs to null and later check if an element of this array is null in a while loop?
[英]Check array element for null
我有一個叫做quint8 block[16]
的數組,我:
block[16] = { 0 }
初始化為零 bool fill(const quint8 *data)
在此fill
函數中,我想查看數組是否已完全填充或它是否包含未填充的空元素。
這樣執行檢查是否正確? if(!data[i])
嗎? 我在這個論壇上看到過類似的問答,但他們所有人都使用\\0
或NULL
而且我聽說這樣做不是一種好的方式,這讓我感到困惑。
整數類型在C ++中沒有“空”概念。
兩種可能的想法是:
1)使用一些特定的整數值表示“未設置”。 如果0對您的數據有效,則顯然不能用於此目的。 也許可以使用其他一些值,例如類型的最大值(在這種情況下,看起來像是0xff)。 但是,如果所有可能的值都對您的數據有效,那么這種想法將行不通。
2)使用其他數據來跟蹤已設置的值。 一種方式是布爾數組,每個布爾數組對應一個數據元素。 另一種方法是簡單地計算已將一個值設置為多少個元素(顯然,僅當您的數據按順序填充且沒有任何間隙時,這才有效)。
如果您的問題是,您是否可以區分一個數組的一個元素,該元素被賦值為零,一個元素未被賦值但被初始化為值零,那么答案是:您不能。
您將必須找到其他方法來完成您要完成的任務。 很難提供具體的建議,因為我看不到您正在嘗試做的更廣泛的了解。
這取決於quint8
類型quint8
具有布爾轉換運算符或某些其他轉換運算符,例如轉換為整數類型。
如果quint8
是某些整數類型(對於整數類型,則為typedef),那么就沒有問題。 這個定義
quint8 block[16] = { 0 };
用零初始化數組的所有元素。
考慮到一般情況下,可以使用標頭<algorithm>
聲明的std::find
, std::find_if
或std::any_of
算法完成任務
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.