在此程式碼範例中,目標是建立一個函數,該函數接受以下類型的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中文網其他相關文章!