如何在C++ set遍历中删除元素

   2024-10-07 9820
核心提示:在C++中,不能在set的遍历过程中直接删除元素,因为这样会影响迭代器的有效性。如果要删除set中的元素,需要先标记要删除的元素

在C++中,不能在set的遍历过程中直接删除元素,因为这样会影响迭代器的有效性。如果要删除set中的元素,需要先标记要删除的元素,然后在遍历完成后再统一删除。

下面是一个示例代码,演示了如何在遍历set时删除元素:

#include <iostream>#include <set>int main() {    std::set<int> mySet = {1, 2, 3, 4, 5};    // 要删除的元素集合    std::set<int> toRemove = {2, 4};    // 遍历set,删除指定的元素    for(auto it = mySet.begin(); it != mySet.end(); ) {        if(toRemove.count(*it)) {            it = mySet.erase(it);        } else {            ++it;        }    }    // 输出删除后的set    for(auto it = mySet.begin(); it != mySet.end(); ++it) {        std::cout << *it << " ";    }    return 0;}

在上面的示例中,先创建了一个set,并定义了要删除的元素集合toRemove。然后通过遍历set,将需要删除的元素标记并在循环结束后统一删除。

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式网站留言    |  赣ICP备2021007278号