首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

你可以在迭代它时从std :: list中删除元素吗?

在迭代过程中,您不能直接从std::list中删除元素。这是因为std::list的迭代器在删除元素时会失效。为了在迭代过程中删除元素,您需要使用std::remove_if算法和std::list的特定方法。

以下是一个示例,展示了如何在迭代std::list时删除元素:

代码语言:cpp
复制
#include<iostream>
#include <list>
#include<algorithm>

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

    // 使用 std::remove_if 和 std::list::erase 删除元素
    my_list.erase(std::remove_if(my_list.begin(), my_list.end(), [](int value) {
        return value == 3;
    }), my_list.end());

    // 输出剩余元素
    for (int value : my_list) {
        std::cout<< value << " ";
    }

    return 0;
}

在这个示例中,我们使用std::remove_if算法将值为3的元素移动到列表的末尾,并使用std::list::erase方法删除这些元素。这样,在迭代过程中就可以安全地删除元素。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的合辑

领券