閑古鳥

オールドプログラマの日記。プログラミングとか病気(透析)の話とか。

配列を任意の値で初期化(fill)したい

0で初期化するなら何の苦労もないのだけど、1とか10にしたいって時。

C++ならstd::fillがあるので:

int arr[5];
std::fill(arr, arr + _countof(arr), 10);

と書ける。さらにstd::vectorには初期値をコンストラクタで指定できるから:

std::vector<int> arr(5/*要素数*/, 10/*値*/);

で済む。

C#だとどちらも類似機能がないので(多分)、どうしても一行で書くならこうなるのだろうか:

var arr = Enumerable.Range(0, 5).Select(_ => 10).ToArray();

なんだか遠回りしている気もする。まあArray.Fillとかないなら追加すればいいだけなんですけど。

Rubyだと "[10]*5" で済んじゃって楽ですね。