ホームページ  >  記事  >  バックエンド開発  >  std::array には、指定された値をすべての要素に割り当てるコンストラクターがないのはなぜですか?

std::array には、指定された値をすべての要素に割り当てるコンストラクターがないのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-23 14:50:02997ブラウズ

Why Are There No Constructors in std::array to Assign a Specified Value to All Elements?

std::array のコンストラクターの制限

質問:

なぜ std ではないのか::array は、すべての要素を指定された値で初期化するコンストラクターを提供しますか?

答え:

設計上、std::array は集約型です。つまり、ユーザー定義のコンストラクターはありません。その結果、次のようなコンストラクターを持つことはできません:

<code class="cpp">std::array<T, size>::array(const T& value);</code>

代替:

std::array にはそのようなコンストラクターがありませんが、実現するための代替オプションがあります。同じ結果:

  1. デフォルトの構築と std::fill: std::array をデフォルトで構築した後、std::fill 関数を使用して代入できます。すべての要素への特定の値:

    <code class="cpp">std::array<int, 10> arr;
    std::fill(arr.begin(), arr.end(), -1);</code>
  2. 簡単な初期化と 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。