數組上基於範圍的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中文網其他相關文章!