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

avatar
作者
筋斗云
阅读量:1

在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,将需要删除的元素标记并在循环结束后统一删除。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!