1. ホーム
  2. c++

[解決済み] なぜ std::array には、配列に格納する値を受け取るコンストラクタがないのですか?

2023-07-21 09:14:13

質問

がないのはなぜですか?

std::array<T,size>::array(const T& value);

は見落としか?私にはとても便利なものに思えますし、ダイナミックコンテナ(例えば std::vector のような) 動的コンテナには同様のコンストラクタがあります。

を十分に理解しています。

std::array<T,size>::fill(const T& value);

というのがありますが、これはコンストラクタではないので、最初にメモリがゼロになります。もし私がすべての -1 のような この人 ?

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

std::array は、設計上、集合体であるため、ユーザが宣言したコンストラクタを持ちません。

あなたが言うように、あなたは fill をデフォルトで構築した後です。これは集合体なので、デフォルトの構築ではメモリはゼロになりませんが、初期化されないままになります (含まれる型が些細な初期化可能である場合)。