C 言語で配列に特定の値を設定するコンストラクターの欠如標準テンプレート ライブラリ (STL) は眉をひそめています。 std::array は、動的対応する std::vector とは異なり、そのようなコンストラクターを提供しません。この省略により、開発者はそれが見落としなのか意図的なものなのか疑問を残しています。
配列要素を初期化するコンストラクタを含めることの支持者は、その利便性を主張しています。 。これにより、std::vector のような動的コンテナーに初期値を受け入れるコンストラクターがあるのと同様に、迅速かつ簡単な初期化が可能になります。この機能により、潜在的な制限がある、手動による初期化やデフォルト構築後の std::array::fill(const T& value) の使用が不要になります。
ただし、このコンストラクターが存在しないのは、集合体としての std::array の設計に起因します。 C の集約はユーザー定義のコンストラクターを持たない型であり、その動作が C スタイルの配列と一貫していることが保証されます。この設計の選択により、メモリ管理が簡素化され、生の配列のドロップイン置換として std::array を使用できるようになります。
コンストラクターの間値の初期化は利用できませんが、開発者は代わりにデフォルトの構造を使用し、その後に std::array::fill を使用することもできます。デフォルトの構築では、配列要素が初期化されないままになり (自明に初期化可能な型の場合)、後続のフィル操作に白紙の状態が提供されます。このアプローチにより、たとえ単純に構築された要素であっても、配列に必要な値が確実に入力されます。
以上がstd::array には値を初期化するためのコンストラクターがないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。