1. ホーム
  2. c++

[解決済み】C++で配列の全要素を1つのデフォルト値で初期化する?

2022-03-31 22:25:21

質問

C++のノート。配列の初期化 には、配列の初期化に関する素晴らしいリストがあります。私は

int array[100] = {-1};

1で埋め尽くされると思っていたが、そうではなく、最初の値だけがそうで、残りは0とランダムな値が混ざっている。

コード

int array[100] = {0};

は正常に動作し、各要素に0をセットします。

何を見逃しているのでしょうか... 値がゼロでない場合は初期化できないのですか?

そして2:デフォルトの初期化(上記のように)は、配列全体をループして値を代入する通常の方法よりも速いですか、それとも同じことをするのですか?

どのように解決するのですか?

使用した構文で

int array[100] = {-1};

は、最初の要素を -1 で、残りは 0 に設定されるため、省略された要素はすべて 0 .

C++では、それらを全て設定するには -1 を使用すると、次のようになります。 std::fill_n から <algorithm> ):

std::fill_n(array, 100, -1);

ポータブルC言語では、自分でループを巻かなければなりません。コンパイラによる拡張もあるし、実装で定義された動作に依存するのも手だ。