c++配列の初期化方法について

c++においての便利な配列の初期化方法についてまとめます。

int型の配列を0で初期化する

0で初期化したい場面はよくありますが、
以下のように書くと、配列aを0で一括初期化することができます。

int a[10] = {0};

しかし、配列aを1で初期化したいとして、

int a[10] = {1};

などと書くと、先頭だけが1で残りは0が代入されます。

bool型も同様に、

bool a[10] = {0};

とすれば、ランダムな値は入らず、全てが0で初期化されます。

配列の値を一括初期化する

int型の配列で0以外の値で一括初期化するには、

std::fill_n関数を使うと便利です。

int a[10];
// 対象配列,要素数,初期化する値
std::fill_n(a,10,1);

配列の値を一括初期化する2

stack over flowより、コンパイラ限定ですが、こんな初期化方法もあります。

int array[100] = { [0 ... 99] = -1 };

配列の値を一括初期化する3

c++11から加わったarray headerを使えば、arrayのfill関数で一括初期化が可能です。

#include<array>
// <型,サイズ> {}0で初期化(原理は配列と同じ)
std::array<int,10> a = {}
// -1で初期化
a.fill(-1)
for(int i = 0;i < a.size();++i){
  // 出力 -1 * 10
  cout << a[i];
}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です