C 11 中基於範圍的for 循環
語法和用法
C 11 引入了基於範圍的for 循環,作為一種簡潔而富有表現力的方式迭代容器。語法為:
for (range_declaration : container) {
// body of the loop
}
其中:
- range_declaration 宣告一個變數來保存容器的每個元素。
- container 是要迭代的容器結束。
透過引用捕獲或Value
range_declaration 中的變數可以使用以下語法透過引用或值捕獲:
- auto 按值捕獲元素。
- auto& 捕獲元素透過非常量引用。
- const auto& 透過 const 捕捉元素參考。
對於觀察元素,不需要修改它們,應該使用 const auto&。這可以防止不必要的複製並確保原始元素不會被修改。
如果您想修改元素,請使用auto&。
請注意,對於具有代理迭代器(如std::vector),您需要使用auto&&來捕獲元素
使用基於範圍的For 的指南
使用基於範圍的for時請考慮以下指南:
- 用於觀察元素:
for (const auto& elem : 容器) (透過const 捕捉參考)- 如果元素複製起來很便宜(例如,整數),您可以使用for (auto elem :容器)(按值捕獲)。
-
- 用於修改元素:
for (auto& elem : 容器) (capture by非常量引用)- 對於🎜>對於代理迭代器(例如std::vector),使用for (auto&& elem : container)(透過 && 捕獲)。
通用程式碼注意事項
在通用程式碼中,您不知道要迭代的元素的類型,請使用:
for (const auto& elem : container) 來觀察元素。 - for (auto&& elem : container) for修改元素(適用於常規迭代器和代理迭代器)。
-
以上是如何在 C 11 中有效使用基於範圍的 For 迴圈?的詳細內容。更多資訊請關注PHP中文網其他相關文章!