首頁 > 後端開發 > C++ > 如何在 C 11 中有效使用基於範圍的 For 迴圈?

如何在 C 11 中有效使用基於範圍的 For 迴圈?

Susan Sarandon
發布: 2024-12-21 08:13:09
原創
842 人瀏覽過

How Do I Effectively Use Range-Based For Loops in C  11?

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板