1

std:array が初期化されたかどうか (またはデフォルトの共通値) を確認する必要があります。配列はオプションなので、値があるかどうかを確認する必要があります。ブーストは使いません。私はこれを試しました:

array<unsigned char, 2> testArr;
testArr.fill(0);
if(testArr.empty()){
    cout << "testArr is empty" <<endl ;
}

私はデフォルト値に初期化し、反復せずにデフォルト値をチェックする簡単な方法を探しています(自分で)、何かありますか?

4

2 に答える 2

4

オプションまたは何か他のものなしでこれを行う方法はありません。std::array::empty()

コンテナに要素がないかどうか、つまりbegin()== end()かどうかをチェックします。

したがって、コンテナ(つまりstd::array<T, 0>)に要素がなく、他に何もないことを確認します。オプションのクラスを使用するか、配列を反復処理して値を確認する必要があります。使用したくない場合はboost::optional、のように独自のオプションを記述してくださいboost::optional。とても簡単です。

于 2012-08-19T16:07:04.143 に答える
2

はい。初期化されていないままにしないでください。boost::optional<array<unsigned char, 2>>常に有用なデータが含まれているとは限らない場合などを考えてみてください。

于 2012-08-19T16:02:42.743 に答える