6
std::array<int,4> myInts;
std::array<bool,2> myBools;

との要素をfalse および 0 と見なすことはできますか、それともmyInts配列を手動で作成する必要がありますか?myBoolsfill

4

1 に答える 1

12

要素はランダムな値に設定されますが、次のように値を初期化することができます。

std::array<int,4> myInts{}; // all zeroes
std::array<bool,2> myBools{}; // all false

したがって、要素をリセットする必要はなく、特定の値に初期化できます。要素を異なる値に初期化することもできます:

std::array<int,4> myInts{1,2,33,44};
std::array<bool,2> myBools{true, false};

初期化子リスト内の配列のサイズよりも要素が少ない場合、欠落している要素はゼロで初期化されます。

std::array<int,4> myInts{1,2}; // array contains 1,2,0,0

標準でstd::arrayは、これは集合体であると指定されており、配列データ メンバーを持つものとして実装されていることを示すコード例がいくつかあります。これは、型が集約であることを強調するためだけのものであると主張していますが、この実装が使用されている場合 (および GCC が使用している場合)、 内の配列を初期化しているため、追加の中括弧のセットが必要になりますstd::array

std::array<int,4> myInts{ {1,2,33,44} };

一方、このケースはブレースの省略に該当するため、余分なブレースのセットは必須ではありません。

于 2012-08-14T20:08:20.687 に答える