首頁 > 後端開發 > C++ > 為什麼 std::array 中沒有建構函式來為所有元素指派指定值?

為什麼 std::array 中沒有建構函式來為所有元素指派指定值?

Patricia Arquette
發布: 2024-10-23 14:50:02
原創
1059 人瀏覽過

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

std::array 的建構子限制

問題:

問題:

問題:

<code class="cpp">std::array<T, size>::array(const T& value);</code>
登入後複製
為什麼std: :array 提供一個建構函數,用指定值初始化所有元素?

答案:

根據設計,std::array 是一個聚合類型,這表示它沒有使用者定義的建構子。因此,它不能有這樣的建構子:
  1. 替代方案:

    <code class="cpp">std::array<int, 10> arr;
    std::fill(arr.begin(), arr.end(), -1);</code>
    登入後複製
    雖然std::array 缺少這樣的建構函數,但還有其他選項可以達到相同的結果:
  2. 預設建構和std::fill:

    預設建構std::array後,可以使用std::fill函式來賦值所有元素的特定值:
    <code class="cpp">std::array<std::string, 10> arr = {}; // Trivial initialization
    std::uninitialized_fill(arr.begin(), arr.end(), std::string("Example"));</code>
    登入後複製

簡單初始化和std::uninitialized_fill: 如果std::array 中包含的類型是可簡單初始化的,預設構造不會將記憶體初始化為零,但會使其保持未初始化狀態。在這種情況下,您可以使用std::uninitialized_fill 為所有未初始化的元素分配特定值:透過了解std::array 構造函數的限制並採用這些替代方案,您可以使用所需的值有效地初始化std::array 的所有元素。

以上是為什麼 std::array 中沒有建構函式來為所有元素指派指定值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板