首頁 > 後端開發 > C++ > 您可以在 C 11 基於範圍的 For 迴圈期間從向量中刪除元素嗎?

您可以在 C 11 基於範圍的 For 迴圈期間從向量中刪除元素嗎?

Susan Sarandon
發布: 2024-12-02 13:07:12
原創
155 人瀏覽過

Can You Remove Elements from a Vector During a C  11 Range-based For Loop?

在基於範圍的for 循環中管理向量元素

在C 11 中,基於範圍的for 循環提供了一種方便的方法來迭代容器的元素。但是,某些操作(例如從向量中刪除元素)在這些循環中會出現問題。

在 C 11 基於範圍的 for 迴圈期間可以從向量中刪除元素嗎?

不幸的是,沒有。基於範圍的 for 迴圈設計用於容器中每個元素的一次性迭代。它們不適合修改容器本身,包括刪除元素。

元素刪除的替代方法:

要從迴圈內的向量中刪除元素,必須使用傳統的 for 迴圈或其變體。這些允許對容器進行修改和非線性遍歷。

範例:

auto i = std::begin(inv);

while (i != std::end(inv)) {
    // Do some stuff
    if (blah)
        i = inv.erase(i);
    else
        ++i;
}
登入後複製

透過使用 std::begin 和 std::end 函數,循環使用迭代器迭代向量。當一個元素被標記為刪除時,將呼叫擦除函數,這將使指向已刪除元素的迭代器無效。然後循環繼續推進迭代器。

總之,雖然基於範圍的 for 迴圈為唯讀迭代提供了易用性,但對於從向量中刪除元素等操作,您需要使用傳統的 for 迴圈來保持對容器修改的控制。

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

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