在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,將需要刪除的元素標記并在循環結束后統一刪除。