溫馨提示×

c++遍歷set時如何避免死循環

c++
小樊
116
2024-06-24 16:21:29
欄目: 編程語言

在遍歷set時,應該避免在循環體內對set進行修改操作,因為這樣可能會導致迭代器失效,從而導致死循環的發生。

如果需要在遍歷set的過程中對set進行修改操作,可以采用以下兩種方法來避免死循環:

  1. 使用臨時變量保存需要刪除或插入的元素,然后在遍歷完成后再對set進行修改操作。
std::set<int> mySet = {1, 2, 3, 4, 5};
std::set<int> elementsToRemove;

for (auto it = mySet.begin(); it != mySet.end(); ++it) {
    if (*it % 2 == 0) {
        elementsToRemove.insert(*it);
    }
}

for (auto num : elementsToRemove) {
    mySet.erase(num);
}
  1. 使用迭代器進行遍歷,并在處理完當前元素后手動更新迭代器。
std::set<int> mySet = {1, 2, 3, 4, 5};

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

通過以上方法,可以避免在遍歷set時出現死循環的情況。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女