讓自訂類型與基於範圍的for 迴圈相容
要啟用基於範圍的for 迴圈與自訂資料類型的使用,您有兩個主要選項:
命名空間注意事項:
如果您的自訂類型駐留在命名空間(例如xml)中,則必須聲明begin() 和end()也在該命名空間內運作。不需要指定 xml::begin() 或 std::begin()。
方法要求:
begin/end 回傳值不是需要是實際的迭代器。但是,它們必須遵守特定要求:
基於範圍的for 循環擴展:
基於範圍的for 循環語法for (range_declaration : range_expression) 擴充為下列偽代碼:
{ auto &range = range_expression; for (auto begin = begin_expr, end = end_expr; begin != end; ++begin) { range_declaration = *begin; loop_statement } }
C 17 解耦結束類型:
在C 17 中,基於範圍的for 循環擴展偽代碼更改為:
{ auto &range = range_expression; auto begin = begin_expr; auto end = end_expr; for (; begin != end; ++begin) { range_declaration = *begin; loop_statement } }
此變更允許結束迭代器類型與開始迭代器類型不同。它允許使用僅支援與開始迭代器類型進行不等式比較的“哨兵”迭代器。
以上是如何使我的自訂類型與 C 中基於範圍的 for 迴圈一起使用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!