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

Patricia Arquette
リリース: 2024-10-23 14:50:02
オリジナル
992 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!