std::array のコンストラクターの制限
質問:
なぜ std ではないのか::array は、すべての要素を指定された値で初期化するコンストラクターを提供しますか?
答え:
設計上、std::array は集約型です。つまり、ユーザー定義のコンストラクターはありません。その結果、次のようなコンストラクターを持つことはできません:
<code class="cpp">std::array<T, size>::array(const T& value);</code>
代替:
std::array にはそのようなコンストラクターがありませんが、実現するための代替オプションがあります。同じ結果:
デフォルトの構築と std::fill: std::array をデフォルトで構築した後、std::fill 関数を使用して代入できます。すべての要素への特定の値:
<code class="cpp">std::array<int, 10> arr; std::fill(arr.begin(), arr.end(), -1);</code>
簡単な初期化と std::uninitialized_fill: std::array 内に含まれる型が簡単に初期化可能な場合、デフォルトの構造では、メモリはゼロに初期化されませんが、初期化されないままになります。このような場合、std::uninitialized_fill を使用して、初期化されていないすべての要素に特定の値を割り当てることができます。
<code class="cpp">std::array<std::string, 10> arr = {}; // Trivial initialization std::uninitialized_fill(arr.begin(), arr.end(), std::string("Example"));</code>
std::array のコンストラクターの制限を理解し、これらの代替手段を採用することで、を使用すると、std::array のすべての要素を目的の値で効果的に初期化できます。
以上がstd::array には、指定された値をすべての要素に割り当てるコンストラクターがないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。