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

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

Patricia Arquette
發布: 2024-12-29 20:19:12
原創
309 人瀏覽過

How Can I Correctly Use Range-Based For Loops in C  11?

C 11 中正確使用基於範圍的for 循環的方法

基於範圍的for 循環是一種簡明且強大的Iterator 遍歷機制,已於C 11中引入。它用於遍歷容器或其他可迭代序列,並透過一個或多個變數引用該序列中的元素。以下是如何正確使用基於範圍的 for 迴圈:

語法

for (auto elem : container) {
  // 代码体
}
登入後複製

其中:

  • auto 關鍵字表示編譯器會自動推斷元素類型。
  • elem 是循環中的元素的迭代器變數。
  • container 是要遍歷的容器或可迭代序列。

元素捕獲模式

使用基於範圍的for 循環時,可以選擇以下三種元素捕獲模式之一:

  1. 按值捕獲(auto elem):建立一個元素的本地副本。這適用於元素是便宜複製的類型(例如 int、double 等)。
  2. 依引用捕獲(auto& elem):直接引用容器中的元素。這用於修改元素或需要避免複製的類型。
  3. 依引用擷取 proxy(auto&& elem):用於遍歷使用「proxy 迭代器」的容器(例如 std::vector)。

觀測還是修改

基於範圍的for 循環可以用於兩個主要目的:

  1. 觀測元素:使用const auto& elem 捕獲元素,以確保不會修改原始元素。
  2. 修改元素:使用 auto& elem 捕獲元素,以直接修改原始元素。

準則

要正確使用基於範圍的 for循環,請考慮以下準則:

  • 對於觀測元素,使用:
for (const auto& elem : container) // 按引用捕获常量
登入後複製
  • 對於修改元素,使用:
for (auto& elem : container) // 按引用捕获
登入後複製
  • 如果容器使用「proxy迭代器”,使用:
for (auto&& elem : container) // 按引用捕获 proxy
登入後複製

泛型代碼中的注意事項

在泛型代碼中,建議使用const auto& elem 捕獲元素以進行觀測,以及auto&& elem 捕獲元素以進行修改,因為這些方法適用於各種類型的容器和元素。

以上是如何在 C 11 中正確使用基於範圍的 For 迴圈?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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