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];
}