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

如何將未知大小的 std::array 傳遞給 C 中的函式?

Barbara Streisand
發布: 2024-10-24 19:04:30
原創
939 人瀏覽過

How to Pass an std::array of Unknown Size to a Function in C  ?

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

在C 中,如何建立一個接受std 的函數: :已知類型的數組,但大小未知?

考慮以下範例:

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

給定此函數,您可以建立不同大小的std::array 並將它們傳遞給mulArray:

<code class="cpp">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 樣式數組?

不,不可能執行此操作不使用函數模板或 std::vector 等替代容器的操作。

函數範本解決方案

建立可以處理任何大小的std::array 的通用函數,您需要使用函數範本:

<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/Y932XW)

以上是如何將未知大小的 std::array 傳遞給 C 中的函式?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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