首頁 > 後端開發 > C++ > 主體

大小未知的 std::array 可以直接傳遞給函數嗎?

Susan Sarandon
發布: 2024-10-25 04:44:29
原創
293 人瀏覽過

Can std::array with Unknown Size be Passed to a Function Directly?

將未知大小的std::array 傳遞給函數

在此程式碼範例中,目標是建立一個函數,該函數接受以下類型的std:: array已知類型但大小未知。這是各種程式設計任務中都可能出現的常見場景。

<code class="cpp">// made up example
void mulArray(std::array<int, ?>& arr, const int multiplier) {
    for(auto& e : arr) {
        e *= multiplier;
    }
}

// lets imagine these being full of numbers
std::array<int, 17> arr1;
std::array<int, 6>  arr2;
std::array<int, 95> arr3;

mulArray(arr1, 3);
mulArray(arr2, 5);
mulArray(arr3, 2);</code>
登入後複製

但是,在開發人員尋找解決方案的過程中,他們遇到了使用函數模板的建議。雖然函數模板可以解決這個問題,但它們可能會帶來額外的複雜性,並且並不總是最有效的方法。

提出的問題是是否有一種更簡單的方法來完成此任務,類似於如何使用純 C 風格數組。不幸的是,答案是否定的。在 C 中,沒有直接的方法可以在不使用函數模板的情況下將未知大小的陣列傳遞給函數。

為了實現這一點,我們確實必須求助於函數模板,如下所示:

<code class="cpp">template<std::size_t SIZE>
void mulArray(std::array<int, SIZE>& arr, const int multiplier) {
    for(auto& e : arr) {
        e *= multiplier;
    }
}</code>
登入後複製

此函數模板可以與任何大小的數組一起使用,如下實例所示: https://godbolt.org/z/sV49sK

以上是大小未知的 std::array 可以直接傳遞給函數嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!