数组上基于范围的 For 循环传递给非主函数
问题:
在 C 项目中,尝试在传递给非主函数的数组上使用基于范围的 for 循环无法编译。当尝试访问非主函数中基于范围的 for 循环时,代码会抛出错误,导致无法找到 begin(int*&) 的匹配函数调用。
答案:
当您将数组传递给非主函数时,数组会衰减为指针,从而丢失有关其大小的关键信息。要在非主函数中启用基于范围的 for 循环:
使用数组引用: 通过引用而不是指针传递数组。这保留了大小信息:
<code class="cpp">void foo(int (&&bar)[3]);</code>
通用方法: 使用带有指定数组大小的模板参数的函数模板。这种方法允许传递不同的数组大小:
<code class="cpp">template <std::size_t array_size> void foo(int (&&bar)[array_size]);</code>
通过保留大小信息,基于范围的 for 循环可以在非范围内正确地迭代数组元素。主要功能。
以上是为什么基于范围的 for 循环在传递给 C 中非主函数的数组上使用时会失败?的详细内容。更多信息请关注PHP中文网其他相关文章!