首頁 >後端開發 >C++ >使用基於範圍的 For 迴圈時可以從 C 向量中刪除元素嗎?

使用基於範圍的 For 迴圈時可以從 C 向量中刪除元素嗎?

Linda Hamilton
Linda Hamilton原創
2024-11-28 17:41:14993瀏覽

Can You Remove Elements from a C   Vector While Using a Range-Based For Loop?

使用C 11 範圍循環迭代和修改向量

使用C 11 基於範圍的for 循環遍歷向量時,會出現一個常見問題:您可以在其中刪除某個項目嗎?循環?

基於範圍的 For 循環的局限性

答案是否定的,因為基於範圍的 for 循環設計用於一次訪問容器的每個元素。如果需要修改容器、刪除元素或執行非線性迭代,則應使用傳統的 for 迴圈。

使用傳統循環修改向量

要在迭代時從向量中刪除項目,可以使用傳統的for循環:

for (auto it = inv.begin(); it != inv.end(); ++it) {
    // Do some stuff
    if (blah) {
        it = inv.erase(it);
        --it;  // Decrement iterator to avoid skipping an element
    }
}

傳統循環的優點

傳統循環比基於範圍的for循環提供更多靈活性:

  • 您可以多次存取元素。
  • 您可以透過新增或刪除來修改容器元素。
  • 您可以以非線性方式迭代容器,例如跳過或重新訪問元素。

以上是使用基於範圍的 For 迴圈時可以從 C 向量中刪除元素嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn