簡體   English   中英

檢查數組元素是否為空

[英]Check array element for null

我有一個叫做quint8 block[16]的數組,我:

  • block[16] = { 0 }初始化為零
  • 用一些數據填充
  • 然后將其作為參數傳遞給方法/函數,例如bool fill(const quint8 *data)

在此fill函數中,我想查看數組是否已完全填充或它是否包含未填充的空元素。

這樣執行檢查是否正確? if(!data[i])嗎? 我在這個論壇上看到過類似的問答,但他們所有人都使用\\0NULL而且我聽說這樣做不是一種好的方式,這讓我感到困惑。

整數類型在C ++中沒有“空”概念。

兩種可能的想法是:

1)使用一些特定的整數值表示“未設置”。 如果0對您的數據有效,則顯然不能用於此目的。 也許可以使用其他一些值,例如類型的最大值(在這種情況下,看起來像是0xff)。 但是,如果所有可能的值都對您的數據有效,那么這種想法將行不通。

2)使用其他數據來跟蹤已設置的值。 一種方式是布爾數組,每個布爾數組對應一個數據元素。 另一種方法是簡單地計算已將一個值設置為多少個元素(顯然,僅當您的數據按順序填充且沒有任何間隙時,這才有效)。

如果您的問題是,您是否可以區分一個數組的一個元素,該元素被賦值為零,一個元素未被賦值但被初始化為值零,那么答案是:您不能。

您將必須找到其他方法來完成您要完成的任務。 很難提供具體的建議,因為我看不到您正在嘗試做的更廣泛的了解。

這取決於quint8類型quint8具有布爾轉換運算符或某些其他轉換運算符,例如轉換為整數類型。

如果quint8是某些整數類型(對於整數類型,則為typedef),那么就沒有問題。 這個定義

quint8 block[16] = { 0 };

用零初始化數組的所有元素。

考慮到一般情況下,可以使用標頭<algorithm>聲明的std::findstd::find_ifstd::any_of算法完成任務

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM