亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

c++遍歷過程中如何刪除元素

c++
小樊
94
2024-07-30 13:20:12
欄目: 編程語言

在C++中,如果需要在遍歷過程中刪除元素,需要注意一些問題,因為在刪除元素后可能會導致迭代器失效,從而引發未定義行為。

一種解決方案是使用迭代器erase()方法,該方法會返回指向被刪除元素之后的元素的迭代器,從而避免迭代器失效問題。示例代碼如下:

#include <iostream>
#include <vector>

int main() {
    std::vector<int> vec = {1, 2, 3, 4, 5};

    for (auto it = vec.begin(); it != vec.end();) {
        if (*it % 2 == 0) {
            it = vec.erase(it);
        } else {
            ++it;
        }
    }

    for (auto num : vec) {
        std::cout << num << " ";
    }

    return 0;
}

在上面的示例中,我們使用了erase()方法刪除了所有偶數元素,并且在刪除元素后更新了迭代器。

另外一種解決方案是使用標準庫中的算法remove_if()結合erase()方法,示例代碼如下:

#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    std::vector<int> vec = {1, 2, 3, 4, 5};

    vec.erase(std::remove_if(vec.begin(), vec.end(), [](int num){ return num % 2 == 0; }), vec.end());

    for (auto num : vec) {
        std::cout << num << " ";
    }

    return 0;
}

在上面的示例中,我們使用了remove_if()算法來移動所有滿足條件的元素到容器的末尾,然后用erase()方法刪除這些元素。

總的來說,在使用迭代器遍歷容器并刪除元素時,需要注意避免迭代器失效的問題,可以使用erase()方法或者標準庫中的算法來解決這個問題。

0
古蔺县| 南涧| 遂溪县| 潞西市| 独山县| 井冈山市| 肇州县| 宜兰县| 湘潭县| 东港市| 万山特区| 阿尔山市| 集安市| 松溪县| 漯河市| 资阳市| 广东省| 赣州市| 武义县| 吉安市| 彰武县| 米林县| 新津县| 漳浦县| 新巴尔虎右旗| 丁青县| 天峨县| 讷河市| 萨迦县| 巢湖市| 汾阳市| 玉溪市| 灵石县| 万宁市| 昌吉市| 冕宁县| 循化| 息烽县| 汪清县| 广宁县| 荆州市|