将未知大小的 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中文网其他相关文章!